section 11.14 of the C++-FAQ-lite dizilerine nasıl uyarlanacağını bilmek istiyorum.Aşırı yüklenmiş havuz operatörü silme işlemini nasıl bildiriyorsunuz?
class Pool {
public:
void* allocate(size_t size) {...}
void deallocate(void* p, size_t size) {...}
};
void* operator new[](size_t size, Pool& pool) { return pool.allocate(size); }
void operator delete[](void* p, size_t size, Pool& pool) { pool.deallocate(p, size); }
struct Foo {...};
int main() {
Pool pool;
Foo* manyFoos = new (pool) Foo [15];
/* ... */
delete [] (pool) manyFoos;
}
Ancak, beyan ve bu operator delete[] (pool)
çağırmak için doğru sözdizimi anlamaya edemedik:
Temelde, böyle bir şey istemez. Buraya kimse yardım edebilir mi?
Üzgünüm, anlamadım. Bu ifade 'manyFoos 'dizisini nasıl siliyor? Ve derleyici 'operatör silme 'değil, operatör silme []' yi nasıl çağırır? – Tobias
@Tobias: Yazım hatası yaşadım. Sabit gönderi. – dirkgently
@Tobias: Yerleşim formunu kullanırken, derleyicinin sizin için otomatik olarak ne yaptığını yapmanız gerekir - 1) nesne (ler) üzerindeki dtoru çağırmak 2) belleği boşaltın. İlk kod satırı # 1 ile ilgilenir. Şimdi, ikinci satır, dizi nesnelerinizin geldiği 'havuz' bölümünün serbest bırakılmasıyla ilgilenir. – dirkgently