这两者有啥区别?

qwe1985qwe 2011-03-07 03:19:33
delete 和 delete[] 有什么区别?
...全文
65 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
fishion 2011-03-07
  • 打赏
  • 举报
回复
[]是删除数组指针,没有的就是删除非数组指针
qwe1985qwe 2011-03-07
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 tandyt 的回复:]
楼主可以参考下?《Effective C++ 》,这本书不错的
[/Quote]

哦,谢谢,我是新人
真相重于对错 2011-03-07
  • 打赏
  • 举报
回复
delete //删除单个指针,如果指针指向的对象有析构函数,调用之
delete[] //删除指针数组,如果有析构函数,依次调用每个数组元素的析构函数
TandyT 2011-03-07
  • 打赏
  • 举报
回复
楼主可以参考下?《Effective C++ 》,这本书不错的
TandyT 2011-03-07
  • 打赏
  • 举报
回复
delete 只会调用一次析构函数,而 delete[] 会调用每一个成员的析构函数。在 More
Effective C++ 中有更为详细的解释: “ 当 delete 操作符用于数组时,它为每个数组元素调 用
析构函数,然后调用 operatordelete 来释放内存。 ” delete 与 New 配套, delete [] 与 new [] 配 套,例如:

MemTest*mTest1=newMemTest[10];
MemTest*mTest2=newMemTest;
int*pInt1=newint[10];
int*pInt2=newint;
delete[]pInt1; //-1-
delete[]pInt2; //-2-
delete[]mTest1;//-3-
delete[]mTest2;//-4-
在 -4- 处报错。
这就说明:对于内建简单数据类型, delete 和 delete[] 功能是相同的。对于自定义的复 杂
数据类型, delete 和 delete[] 不能互用。 delete[] 删除一个数组, delete 删除一个指针简单来 说 ,
用 new 分配的内存用 delete 删除用 new[] 分配的内存用 delete[] 删除 delete[] 会调用数组元素
的析构函数。内部数据类型没有析构函数,所以问题不大。如果你在用 delete 时没用括号,delete 就会认为指向的是单个对象,否则,它就会认为指向的是一个数组。
qjgdftxmu 2011-03-07
  • 打赏
  • 举报
回复
删除指针。。。

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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