困惑,请问布局new和常规new的区别和用法.谢谢!

taurusbbstech 2008-03-31 10:25:26
如题.谢谢!
...全文
202 9 打赏 收藏 举报
写回复
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Supper_Jerry 2008-03-31
  • 打赏
  • 举报
回复
必须手工析构
paidfighting 2008-03-31
  • 打赏
  • 举报
回复
顶,手动析构
hai040 2008-03-31
  • 打赏
  • 举报
回复
好像还要手动调用析构函数

class c;
c* p = new c;//normal
char buf[bufsize];
c* p2 = new(buf) c;//placement
char* pbuf = buf + sizeof(c);
c* p3 = new(pbuf) c;//placement

delete p;
//delete p2;//wrong
p2->~c();
p30>~c();
hai040 2008-03-31
  • 打赏
  • 举报
回复

class c;
c* p = new c;//normal
char buf[bufsize];
c* p2 = new(buf) c;//placement
char* pbuf = buf + sizeof(c);
c* p3 = new(pbuf) c;//placement

delete p;
//delete p2;//wrong
paidfighting 2008-03-31
  • 打赏
  • 举报
回复
placement,就是只调用了构造函数,没有申请内存
冷月清晖 2008-03-31
  • 打赏
  • 举报
回复
http://topic.csdn.net/t/20051005/19/4308391.html
liveforme 2008-03-31
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 Supper_Jerry 的回复:]
必须手工析构
[/Quote]
  • 打赏
  • 举报
回复
析构函数只析构对象不释放空间,这样就可以重用已有的内存空间,并且避免发生错误
  • 打赏
  • 举报
回复
详情请见 c++ primer 4th P638
相关推荐
发帖
C++ 语言

6.3w+

社区成员

C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
帖子事件
创建了帖子
2008-03-31 10:25
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下