new操作符问题

[复制链接]
 楼主| 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

粉丝
快速回复 在线客服 返回列表 返回顶部

196

主题

2726

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部