Если для каждого экземпляра программы память динамически выделялась с использованием new
, тогда было бы неплохо освободить их в деструкторе.
#include <iostream>
using namespace std;
class c{
public:
c(){cout << "Created Object";}
~c(){
delete this;
cout << "Deleted object";
}
};
int main(){
c* ptr = new (nothrow) c();
if(ptr == NULL){
cout << "Null pointer" << endl;
return 1;
}
delete ptr;
}
Is delete this
просто не разрешено ? this
указывает на место в памяти, которое было выделено с помощью new
, так почему это должно вызвать segmentation fault
? Я знаю, что код не является общим c для объектов, хранящихся в стеке, но я пытаюсь выяснить, есть ли способ реализовать эту концепцию.