作者legnaleurc (CA)
看板C_and_CPP
标题Re: [问题] operator new[] 和 delete[] 混用
时间Fri May 22 14:03:04 2009
※ 引述《ilway25 (唉唷喂)》之铭言:
: 由於特殊需求,要加强效率,在配置空间时,
: 不必呼叫 constructor (会浪费时间)
: 但释放时,又必须呼叫 destructor
: T* data = static_cast<T*>(operator new[](size * sizeof(T)));
: delete []T;
: 我想问的是,delete 是否不能这样写?
: 会不会有 undefined behavior ?
: 还是一定要用 operator delete[](T); ?
: 这样又要如何呼叫 destructor 呢囧 谢谢!
不是 delete 的问题,这个容器初始化就己经一团糟了
你只配置空间,不初始化T
我猜之後会有个操作来"初始化" T:(初始化程序只能交给ctor,这里的初始化是错误说法)
data[i] = T();
问题是 data[i] 里的 T 没初始化
所以它的 operator = 根本不存在
或者说所有的 member 都不能正常使用
memcpy ? 只是掉进另一个泥沼而己
如果 T 的初始化很慢,让 T 自己处理
你不会比 T 还了解它要怎麽配置的
--
自High笔记(半荒废)
http://legnaleurc.blogspot.com/
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 122.146.194.91
※ 编辑: legnaleurc 来自: 122.146.194.91 (05/22 14:05)