Деструктор вызывается, когда переменная выходит из области видимости или delete
'd.Это означает, что если у вас нет delete
, вы можете только создавать не- POD структуры в автоматически памяти.
Вы не может использовать malloc
и free
, потому что конструкторы и деструкторы не будут называться .
Но вы можете попробовать создать свои собственные new
и delete
какэто:
void* operator new(size_t size)
{
void* mem = malloc(size);
if (!mem) {
throw std::bad_alloc();
}
return mem;
}
void operator delete(void* ptr)
{
free(ptr);
}
void* operator new[] (size_t size)
{
return (operator new)(size);
}
void operator delete[](void* ptr)
{
return (operator delete)(ptr);
}