打印

new操作符问题

[复制链接]
894|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
pkat|  楼主 | 2012-2-26 16:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
char* buffer = new char[BUF];在buffer中存储对象时,例如:pc1 = new(buffer) JustTesting;(JustTesting为一个类)需要显示调用析构函数,pc1->~JustTesting();最后delete [] buffer;。。

我的问题是,在调用析构函数的时候已经将该类在buffer中的存储空间释放了,如果再释放buffer,那不是造成内存泄漏吗?

相关帖子

沙发
xsgy123| | 2012-2-26 17:06 | 只看该作者
placement new 创建的对象不能直接delete来销毁,而是要调用对象的析够函数来销毁对象,至于对象所占的内存如何处理,要看这块内存的具体来源。

使用特权

评论回复
板凳
john_lee| | 2012-2-29 12:32 | 只看该作者
析构函数和释放存储空间,是两个不同的概念,两者本身并没有关联。
delete操作符只是将“调用析构函数”和“释放存储”这两个动作连续执行而已。
显示调用析构函数,显然只是调用了析构函数,而不会释放存储的。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

196

主题

2726

帖子

0

粉丝