天啊,原来我吃了这么多内存,可我还是糊涂,高手帮帮我!!

sun_wx 2002-01-11 09:37:49
我原来以为只有自建类型的数组才这样删除,
如:
Person *ppn = new Person[100];
...
delete[] ppn;
昨天看书,发现删除所有new出来的数组内存应该这样删除
对于如int,char型的c++内建类型的数组也需要这样删除吗?

char* pstr = new char[100];
...
delete[] pstr;

...全文
90 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
sun_wx 2002-01-11
  • 打赏
  • 举报
回复
多谢!
xulion 2002-01-11
  • 打赏
  • 举报
回复
我曾经做过测试,内置类型使用delete不会有任何问题,当然还是建议你使用[],养成良好的习惯
stl_liu 2002-01-11
  • 打赏
  • 举报
回复
我找到那段代码了(引用他人):

// String的析构函数
String::~String(void)
{
delete [] m_data;
// 由于m_data是内部数据类型,也可以写成 delete m_data;
}

但还是加上吧。不仅表述清晰,而且对于内置类型和自定义类型的一致性是C++追求的目标之一。
invalid 2002-01-11
  • 打赏
  • 举报
回复
要加上,否则造成内存泄漏的。
用一些代码测试工具,会指出这种错误。
stl_liu 2002-01-11
  • 打赏
  • 举报
回复
我确实看到说法,对内置类型调用delete不需要加[],但是官方文档中的例子是加上的。
个人认为还是加上好,自己看着也清楚。
bskay 2002-01-11
  • 打赏
  • 举报
回复
new 用了[];
...
所以delete也用 []
zxy_zs 2002-01-11
  • 打赏
  • 举报
回复
用new分配的内存空间要用delete收回。如果是用malloc分配的话,就要用free收回了

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧