C++中的delete和delete[]的区别
来源:互联网 发布:美的网络市场调查报告 编辑:程序博客网 时间:2024/06/01 10:25
C++中的delete和delete[]的区别(笔记)
最近在准备校招,这里做一些面试或笔试遇到的问题的笔记,加深记忆的同时也预防下次出现容易找到答案
这一次谈一下delete 和delete[]的区别
在C++ primer (中文第五版,p425)中指出:
- delete p 是直接删除指针所指向的内存空间,回收new 分配的单个对象的内存空间, p必须指向一个动态分配的对象或为空;
- delete[] pa 则是先计算pa所对应空间有多少个变量或对象,然后全部释放或调用相应的析构函数(数组元素是按逆序销毁),pa必须指向一个动态分配的数组或为空;
同时,书中指出若delete 一个指向数组的指针时忽略了[] (或 对一个单一对象用了delete []) ,该行为为未定义的,但编译器可能不会给出警告。
具体用代码实验下:
new[] 搭配 delete使用
using namespace std;class T {public: T() { cout << "constructor" << endl; } // 构造函数 ~T() { cout << "destructor" << endl; } // 析构函数};int main(){ const int NUM = 3; T* pa = new T[NUM]; cout << pa << endl; delete pa; // delete[] pa;}
上述为new一个长度为3的数组,但只delete一次,结果如下:
new[] 搭配 delete[]使用
正确应该为:
所以:new 和 delete、new[] 和 delete[] 对应使用。
阅读全文
0 0
- C++中的delete和delete[]的区别
- C++中的delete和delete[]的区别
- C++中的delete和delete[]的区别
- C++中的delete和delete[]的区别
- C++中的delete和delete[]的区别
- C++中的delete和delete[]的区别
- C++中的delete和delete[]的区别
- C++delete和delete[]的区别
- C++delete和delete[]区别
- delete和delete[] 的区别
- delete和delete[]的区别
- delete和delete[] 的区别
- delete和delete[] 的区别
- delete和delete[]的区别
- delete和delete[] 的区别
- delete和delete[]的区别
- delete和delete[] 的区别
- delete和delete[]的区别
- 人工智能机器学习路线图
- ubuntu 安装 有道词典
- Python3相关模块在Linux下的环境配置
- canal配置
- Altium Designer PCB电路板设计总结
- C++中的delete和delete[]的区别
- 学习阶段总结(3)
- 海量数据去重之SimHash算法简介和应用
- sql查询 in(a,b,...) 中允许放入的数据量最大为1000个
- 数字计算机之父——冯·诺依曼
- 点击率预估综述
- Oracle用户管理系列①---修改密码的两种途径
- week5
- codevs 1154 能量项链