关于new/delete的问题

coolnick 2007-05-24 06:12:00
如果在程序中:
char* p = new char[5];
那么在释放p所指的空间时应该选择以下两个哪个呢?
delete p;
delete[] p;
这两种方式编译都能通过,运行也未见异常,欢迎大虾来讨论一下。
...全文
100 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
milksea 2007-05-24
  • 打赏
  • 举报
回复
应该用后一个
delete [] p;

前一种方法不是标准方法,尽管有时是正确的,但不能保证总是(在各种平台、各种编译器下)正确。
晨星 2007-05-24
  • 打赏
  • 举报
回复
这个编译器没有义务检查的,因为delete和delete[]都可以作用于指针。
就像“+”可以作用于所有整数和浮点数一样,你误把4写成4.0:i = i + 4.0;编译器根本检查不出来。

64,647

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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