【c/c++】delete和delete[]详解
来源:互联网 发布:阿里巴巴有淘宝客吗 编辑:程序博客网 时间:2024/05/16 11:56
首先看一个程序
#include <iostream>using namespace std;int main(){int* pData = new int[50];*(pData + 5) = 10;//这里需要注意一点就是delete必须是在使用完以后才能将pData删除,否则输出的就是一个//错误的结果。正如类中析构函数一样,必须是在全部函数调用完以后才会运行cout << *(pData + 5) << endl;delete pData;pData = new int[50];*(pData + 5) = 10;cout << *(pData + 5) << endl;delete[]pData;return 0;}
delete只是释放了指针所指第一个对象的内存空间,delete[]则会调用这段内存空间里的每个数据的析构函数,将数据内部变量指针指向的内存也释放掉
#include <iostream>using namespace std;class Student{private:char* name;int age;public:Student(){name = new char[20];}~Student(){cout << "Name is been deleted!" << endl;delete[] name; //这里delete[]对应是char[20],不是之前的student[5]}};int main(){Student* student = new Student[5];delete[] student; //这里还是必须使用delete[],如果只是delete,程序就会出错。因为单纯的delete只是删除了指针指向的第一个//而没有将剩余的四个删除。student = NULL;student = new Student[2];delete[]student;return 0;}
即便返回的时候是一个指针,你也不能只是调用delete,而是要根据指针后面的指向的内容调用delete[]。
大致的意思:new 对应delete;new []对应delete[].
1 0
- 【c/c++】delete和delete[]详解
- C ++ delete 和delete[]
- [C++] 关于delete和delete[]
- C++delete和delete[]区别
- C++:new和delete
- new和delete【C++】
- {c++}delete与delete[]
- C++delete和delete[]的区别
- C++new和delete重载
- [C++]定制new和delete
- C++-关键字new和delete
- 【C++】new delete & new[] delete[]
- c++---内存问题---delete p和delete[]p 区别
- C++new/delete相关知识点详解
- 学习C++(operator new 和 operator delete)
- C++malloc/free和new/delete
- More Effective C++:不同new和delete
- More Effective C :理解new和delete
- android-Copy and Paste(text and input)
- Activity生命周期
- Java Executor 框架学习总结
- Arrange an Array to Form a Smallest Digit
- Spark 学习视频汇总
- 【c/c++】delete和delete[]详解
- mysql 版本
- Win7系统怀疑重启
- 设计模式系列(1)---观察者模式解析与应用
- eclipse 一直loading org.hibernate.eclipse解决方法
- JS检测用户输入密码强度代码
- iOS开发项目中常用到的一些宏
- 安卓日记——preference用法简介
- 博客开通,AnyCai