C++ delete 和 deallocate 的区别
delete 和 deallocate 的区别
delete是释放动态内存
成员函数中 new的动态内存
deallocate是释放对象内存
成员所占的内存
using namespace std;
class preson{
public:
person(){
ptr=new int[10];
}
~person(){ delete ptr;}
private:
int *ptr;
};
int main(){
while(1){
Person *p=new person;
allocator<person> a;
a.deallocate(p.sizeof(person));
}
return 0;
}
运行结果:程序崩溃
结论:
上述代码,如果deallocate能把所有的内存都释放干净,那么程序将会一直进行下去,因为空间不会增加,但是程序崩溃了,就是因为有没有释放的内存,而那个内存正是每次创建person的时候构造函数new的内存。,deallocate只释放了创建对象时的内存,new的动态内存没有释放掉,如果调用析构函数,delete掉通过new制造出来的动态内存,则程序便可以运行下去。
求点赞👍👍👍
原创不易,点赞容易。
您的鼓励就是我的最大动力!!!。
本篇博客到此结束,谢谢大家观看。