收录日期:2021/01/26 06:33:27 时间:2016/07/30 20:32:43 标签:基础类
delete 和 delete[] 有什么区别?
删除指针。。。
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 就会认为指向的是单个对象,否则,它就会认为指向的是一个数组。
楼主可以参考下?《Effective C++ 》,这本书不错的
delete //删除单个指针,如果指针指向的对象有析构函数,调用之
delete[] //删除指针数组,如果有析构函数,依次调用每个数组元素的析构函数
引用 3 楼 tandyt 的回复:
楼主可以参考下?《Effective C++ 》,这本书不错的


哦,谢谢,我是新人
[]是删除数组指针,没有的就是删除非数组指针

C++ 多继承问题 [求助]识别网站有无SSL 磁盘空间满了,数据表空间也满了! 求使用正则取得文件名称? 求优化千万级数据库语句 急啊,采用ADO连接oracle数据库失败 为什么我定义了def文件,DLL里的函数还是被改名 java游戏服务器 将sql server的函数方法转换成MySQL请各位高手指点。 乌龟被蟒蛇缠绕险丧命 幸有龟壳保护终逃生(图) web service的难题求解! android videoview屏幕缩放 新手求助 事务处理报错.. 关于struct tm *p的一个很奇怪的问题 c#用textbox模糊查询 USB设备通信 求教JQuery插件开发 用C语言写的操作系统进程调度,只实现简单的调度功能。程序有注释。本人认为本程序问题出现在指针的应用,高手请进,指明错误,感激不尽! android手机可以建立类似电脑局域网吗? 关于max(a,b,c ,d)的问题,max函数中的可提供多少参数比较啊?恳请各位师兄师姐帮帮忙! 这些天在工作上总遇到些小问题,都需要用到JQ来实现,但JQ又不懂,希望大家给点建议 求一个sql语句的写法 你不知道的 东软 IIS性能的问题? 不知道,多少钱可以娶个美国妞 union中char类型和short类型 让Repeater每隔30秒刷新一次用代码该怎么写 编译通过了,运行时找不到动态库,which能够找到 如何本地化存储几组数据 System.Data.SqlClient.SqlException: 第 1 行: \'(\' 附近有语法错误