博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[C++ 学习笔记 1] delete 和 delete [] 的本质区别
阅读量:7108 次
发布时间:2019-06-28

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

  之前只系统学过 C,自然地了解了一些 C++ 的皮毛(可以认为是 C+),然后就一直用着 C+ 开发,最近看了一些现代 C++ 代码,感觉是时候好好学习 C++ 了……后续会把学习中记的笔记发出来,尽量简短明了。

  当 ptr 指向的是基础类型数组时,delete ptr 和 delete [] ptr 等价。这好比用 free 释放 malloc 分配的内存,malloc 了多少,不必关心,free 知道要释放多长,因为 malloc 会维护这个长度信息。

  当 ptr 指向类对象数组时,两者的差别在于调用多少个析构函数,delete 只调用第一个元素的析构函数,delete [] 则调用所有元素的析构函数。

#include 
#include
class Foo{public: Foo() { std::cout << __FUNCTION__ << std::endl; } ~Foo() { std::cout << __FUNCTION__ << std::endl; }};int main(){ // bug: 只会析构一个元素 std::shared_ptr
p(new Foo[10]); return 0;}

 

转载于:https://my.oschina.net/umu618/blog/818839

你可能感兴趣的文章
Exported activity does not require permission
查看>>
StackOverflow发布年度开发者调查报告:JavaScript备受欢迎
查看>>
自平衡二叉查找树
查看>>
shell脚本中的数据传递方式
查看>>
Shiro系列(0) - 权限管理在J2EE企业级开发中的应用与实战
查看>>
Gdevops峰会归来
查看>>
[20170215]ORA-00088与DG Gap监测与解决4
查看>>
根据输入的日期,控制台打印格式化日历
查看>>
前端性能影响思维导图
查看>>
过滤器控制用户登录
查看>>
MVC3 Razor视图引擎的基础语法
查看>>
CCan's sign in to Appstore - This action could not be completed
查看>>
Linux下安装JDK及其配置环境变量
查看>>
6、Eternal框架-渲染者
查看>>
麻省:第17.18课
查看>>
maven项目打包时去除dependency-reduced-pom.xml文件
查看>>
Win10下Eclipse插件EasyShell兼容问题处理
查看>>
backbone总结
查看>>
C Primer Plus 第4章 字符串和格式化输入输出--4.1前导程序
查看>>
NSUserDefaults 存储数据到本地,NSUserDefaults 使用
查看>>