delete
m_data不是只释放一个单元么?
不是,
对于
char
,
int
,
float
....等等内部数据类型,
delete
和
delete
[] 一样
但对于类就大有不同
比如
char
* p =
new
char
[128];
delete
p;
和
delete
[] p;
效果一样,p的所有内存都释放了,
delete
和
delete
[] 的不同之处在对
class
的释放,
delete
只会调用一个元素的析构函数,而
delete
[]则调用所有元素的析构
比如
class
t {
~t() {};
};
t* p =
new
t[128];
delete
p;
和
delete
[] p;
都内部调用了
free
释放p的所有(128个)元素,
但
delete
是调用了第一个元素的析构,
而
delete
[] 则是正确的调用128个元素的析构