【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 
相关推荐
你可以叫我仔哥呀15 分钟前
Java程序员学从0学AI(七)
java·开发语言·人工智能·ai·spring ai
_Kayo_19 分钟前
VUE2 学习笔记8 v-text/html/cloak/once/pre/自定义
笔记·学习
LGGGGGQ30 分钟前
嵌入式学习-(李宏毅)机器学习(4)-day31
学习
杨DaB33 分钟前
【SpringMVC】MVC中Controller的配置 、RestFul的使用、页面重定向和转发
java·笔记·后端·学习·spring·mvc·restful
QYR_1136 分钟前
防水医用无人机市场报告:现状、趋势与洞察
大数据·网络·市场研究
烟斗与演绎36 分钟前
综合实验(4)
网络·网络安全·智能路由器
mit6.82438 分钟前
[蓝牙通信] 临界区管理 | volatile | 同步(互斥锁与信号量) | handle
c++·物联网
仙云Q1238 分钟前
IP协议解析:从寻址到路由
网络
万象.1 小时前
Linux网络
linux·网络
望获linux1 小时前
【Linux基础知识系列】第六十四篇 - 了解Linux的硬件架构
linux·运维·服务器·开发语言·数据库·操作系统·嵌入式软件