博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《从缺陷中学习C/C++》——6.10 delete与delete[]的区别
阅读量:7014 次
发布时间:2019-06-28

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

本节书摘来自异步社区出版社《从缺陷中学习C/C++》一书中的第6章,第6.10节,作者: 刘新浙 , 刘玲 , 王超 , 李敬娜 , ,更多章节内容可以访问云栖社区“异步社区”公众号查看。

6.10 delete与delete[]的区别

从缺陷中学习C/C++

代码示例

char *buff = new char[reslen];delete buff;

现象&结果

申请的数组空间没有全部释放,造成内存泄露。用cppcheck工具执行静态代码扫描可以看到如下信息:(error) Mismatching allocation and deallocation: buf。

Bug分析

对于数组类型,如 string str = new string[10],用delete str和delete [] str的区别是,delete str只对str[0]调用了析构函数,而delete []str则对str数组里的每个元素都调用了析构函数。对于单个元素,如 int p =new int (10),delete和delete []都可以释放内存。

正确代码

char *buff = new char[reslen];delete [] buff;

编程建议

操作内存的时候,new[]一定要和delete[]对应。

本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

你可能感兴趣的文章
我的友情链接
查看>>
linux命令学习(68 69)-tree finger
查看>>
写给同事的前端学习路线
查看>>
我的友情链接
查看>>
Global Azure上创建SSTP模式***配置介绍
查看>>
SQL Server 2016 Failover Cluster+ ALwaysOn(二)
查看>>
spring源码--依赖注入
查看>>
rhel7配置多用户tiger vnc server
查看>>
iOS播放系统声音
查看>>
const 命令
查看>>
我的友情链接
查看>>
linux系统root口令丢失
查看>>
菜鸟学Linux 第088篇笔记 配置heartbeat基于crm管理
查看>>
我的友情链接
查看>>
多线程爬虫1
查看>>
OSPF区域划分配置实例
查看>>
CDH5.10.0 离线安装(共3节点)
查看>>
Android第六课 安装异常处理
查看>>
输入n个整数,输出其中最小的k个
查看>>
web.xml 中的listener、 filter、servlet 加载顺序及其详解
查看>>