deallocate: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制造出来的动态内存,则程序便可以运行下去。


求点赞👍👍👍
原创不易,点赞容易。
您的鼓励就是我的最大动力!!!。
本篇博客到此结束,谢谢大家观看。

相关推荐

相关文章