【C++ Primer Plus学习记录】指针——使用delete释放内存

当需要内存时,可以使用new来请求,使用完内存后,可以使用delete将其归还给内存池。

归还或释放(free)的内存可供程序的其他部分使用。

使用delete时,后面要加上指向内存块的指针(这些内存块最初是用new分配的)。

cpp 复制代码
int * ps = new int; //allocate memory with new
... //use the memory
delete ps;//free memory with delete when done

这将释放ps指向的内存,但不会删除指针ps本身。

一定要配对使用new和delete;否则将发生内存泄漏(memory leak),即被分配的内存再也无法使用了。如果内存泄漏严重,则程序将由于不断寻找更多内存而终止。

不要尝试释放已经释放的内存块,C++标准指出,这样做的结果将是不确定的。

不能使用delete来释放声明变量所获得的内存,只能用delete来释放使用new分配的内存。

对空指针使用delete是安全的。

cpp 复制代码
int * ps = new int;   //ok
delete ps;            //ok
delete ps;            //not ok now
int jugs = 5;         //ok
int *pi = &jugs;      //ok
delete pi;            //not allowed,memory allocated by new 
相关推荐
01漫游者4 分钟前
JavaScript函数与对象增强知识
开发语言·javascript·ecmascript
IGAn CTOU6 分钟前
Java高级开发进阶教程之系列
java·开发语言
csbysj202012 分钟前
SQL NULL 函数详解
开发语言
其实防守也摸鱼15 分钟前
CTF密码学综合教学指南--第三章
开发语言·网络·python·安全·网络安全·密码学
NGSI vimp16 分钟前
Java进阶——如何查看Java字节码
java·开发语言
其实防守也摸鱼17 分钟前
CTF密码学综合教学指南--第四章
网络·笔记·安全·网络安全·密码学·ctf
nashane17 分钟前
HarmonyOS 6学习:应用签名文件丢失处理与更新完全指南
学习·华为·harmonyos·harmonyos 5
@codercjw20 分钟前
公差的具体标注方法(书本上/理论上标注方法)
学习
A7bert77735 分钟前
【YOLOv8pose部署至RDK X5】模型训练→转换bin→Sunrise 5部署
c++·python·深度学习·yolo·目标检测
li1670902701 小时前
第二十七章:智能指针
c语言·数据结构·c++·visual studio