【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 
相关推荐
2401_834517074 分钟前
AD学习笔记-35 多层线路和装配图的导出
笔记·学习
资料库014 分钟前
华为OSPF详解
网络·华为
仰泳的熊猫9 分钟前
1112 Stucked Keyboard
数据结构·c++·算法·pat考试
淼淼76311 分钟前
QT表格与数据
开发语言·qt
smile_Iris11 分钟前
Day 38 GPU训练及类的call方法
开发语言·python
嗷嗷哦润橘_20 分钟前
AI Agent学习:MetaGPT项目之RAG
人工智能·python·学习·算法·deepseek
三月微暖寻春笋24 分钟前
【和春笋一起学C++】(五十一)复制构造函数
c++·复制构造函数·显式复制构造函数·隐式复制构造函数
yenggd25 分钟前
锐捷路由器nat上网+ipsec配置案例
网络
liebe1*126 分钟前
第九章 防火墙入侵防御
运维·网络·防火墙
Radan小哥37 分钟前
Docker学习笔记—day012
笔记·学习·docker