博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
条款16:成对使用new以及delete的时候应该采取相同的形式
阅读量:6156 次
发布时间:2019-06-21

本文共 657 字,大约阅读时间需要 2 分钟。

首先思考下面的代码:

1 string * stringArray = new string[100];2 ...3 delete stringArray;
  这是最常见的错误之一了,new与delete不配对,但是仔细想想new与delete为什么一定要配对呢?
  可以想到一种可能就在分配数组的时候,可能记录了数组大小的信息,这样在delete的时候根据是delete或者是delete[]会由数组大小信息做出不同的判断。
一种可能的实现方式也许就像下面这样。
n,string0,string1,string2.......
  这样在使用delete[]的时候就会根据这个n来决定释放的空间大小了。
 
还有就是最好不要去对数组去做typedef,直接用vector去代替可能更好,考虑下面这个例子:
typedef string strArray[4];string * pal = new strArray;
那么在delete的时候可能就去这样做:
delete pal; (实际上这样做大错特错了)
delete [] pal;//这样才是对的啊。
 
小结:new与delete配对,new[]与delete[]配对,其实new[]的使用最好还是交给vector等容器来管理比较好一点。 而new的使用建议更换成自定义的一个RAII类来进行资源的管理而不要使用手动的new以及delete。

转载于:https://www.cnblogs.com/-wang-cheng/p/4857542.html

你可能感兴趣的文章
MySQL的字符集和字符编码笔记
查看>>
ntpd同步时间
查看>>
must implement java.io.Serializable hessian
查看>>
Microsoft Licenses Flash Lite for Windows Mobile Users
查看>>
HDOJ 2020 绝对值排序
查看>>
HDOJ/HDU 2560 Buildings(嗯~水题)
查看>>
Maven编译时跳过Test
查看>>
Spring Boot 整合Spring Security 和Swagger2 遇到的问题小结
查看>>
[20170628]12C ORA-54032.txt
查看>>
linux运维人员的成功面试总结案例分享
查看>>
Windows DHCP Server基于MAC地址过滤客户端请求实现IP地址的分配
查看>>
命令查询每个文件文件数
查看>>
《跟阿铭学Linux》第8章 文档的压缩与打包:课后习题与答案
查看>>
RAC表决磁盘管理和维护
查看>>
Apache通过mod_php5支持PHP
查看>>
发布一个TCP 吞吐性能测试小工具
查看>>
java学习:jdbc连接示例
查看>>
PHP执行批量mysql语句
查看>>
Extjs4.1.x 框架搭建 采用Application动态按需加载MVC各模块
查看>>
Silverlight 如何手动打包xap
查看>>