我是靠谱客的博主 笑点低太阳,最近开发中收集的这篇文章主要介绍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制造出来的动态内存,则程序便可以运行下去。


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

最后

以上就是笑点低太阳为你收集整理的C++ delete 和 deallocate 的区别的全部内容,希望文章能够帮你解决C++ delete 和 deallocate 的区别所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部