constructeur et = (avec auto_ptr)
Bonjour,
je ne comprend pas pourquoi ce code ne fonctionne pas
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| class Base
{
public:
virtual void DoIt()
{};
};
class TTest: public Base
{};
int _tmain(int argc, _TCHAR* argv[])
{
{
std::auto_ptr<TTest> test = new TTest(); // (1)
}
getchar();
return 0;
} |
Le programme plante lors de la libération de l'instance de TTest, lorsque le bloc mémoire est libéré (une assertion en debug : _ASSERTE(_BLOCK_TYPE_IS_VALID(pHead->nBlockUse)); ). Ma classe n'a pas de destructeur virtuel, mais c'est sur le bon type que la libération doit s'effectuer.
Pourtant en changeant (1) par
Code:
std::auto_ptr<TTest> test ( new TTest() );
il n'y a plus de problème. Il me semblait que ces deux versions étaient équivalentes :koi:.