Hé les gars, j'ai écrit un test rapide. Je veux supprimer pour appeler deleteMe qui va ensuite supprimer lui-même. Le but de ceci est que je peux supprimer obj normalement qui sont alloués par un lib. (Je ne veux pas d'accidents dus à crt ou w/e). Avec cette suppression, j'obtiens un stackoverflow, sans que msvc dise que j'ai perdu 4 octets. Quand je n'appelle pas le test je fuis 0. Comment est-ce que je supprime sans un problème de récurrence? -edit- pour que cela soit plus clair. Je veux que le LIB appeler supprimer (ainsi DeleteMe) au lieu du programme en raison de crtsurcharge de surcharge, débordement récursive
class B
{
public:
virtual void deleteMe()=0;
static void operator delete (void* p) { ((B*)p)->deleteMe(); }
};
class D : public B
{
public:
void deleteMe() {
delete this;
}
};
int test()
{
B *p = new D;
delete p;
return 0;
}
la routine de nettoyage est la plupart du temps dans le dtor, je voudrais supprimer l'objet avec suppression normale et l'allouer avec le nouveau normal. Comment est-ce que je fais ceci sans un problème de récurrence? –