Donc je suis un débutant qui essaie de se familiariser avec l'opérateur new. Quel est le problème avec mon destructeur?Opérateur new/delete & destructors
class arr{
public:
arr(){
pool=::operator new(100*sizeof(double));
}
~arr(){
::operator delete(pool);
}
void* pool;
};
int main()
{
arr a;
a.~arr(); //If I comment this out it's ok.
void* pool2=::operator new(100*sizeof(double)); //Works
::operator delete(pool2); //Fine.
system("pause");
return 0;
}
Quitter a. ~ Arr(); en me donne cette erreur:
L'assertion de débogage a échoué! Fichier: Ligne de dbgdel.cpp: 52
Expression: _BLOCK_TYPE_IS_VALID (pHead-> nBlockUse)
Je ne vois pas pourquoi pool2 fonctionne très bien, mais en utilisant la classe me donne des problèmes. Aussi l'erreur n'apparaît qu'après que le système "pauses", ce qui est après un. ~ Arr() s'appelle ???
Merci!
Lisez aussi la réponse de sbi ci-dessous - vous aurez des problèmes si vous ne déclarez pas un constructeur de copie et un opérateur d'affectation qui garantissent que plusieurs copies d'une instance de arr n'essaient pas de supprimer la même mémoire. – James