【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 
相关推荐
炸膛坦客18 分钟前
单片机/C/C++八股:(十九)栈和堆的区别?
c语言·开发语言·c++
零雲19 分钟前
java面试:了解抽象类与接口么?讲一讲它们的区别
java·开发语言·面试
Jay_Franklin36 分钟前
Quarto与Python集成使用
开发语言·python·markdown
happymaker06261 小时前
web前端学习日记——DAY04
前端·学习
2401_831824961 小时前
代码性能剖析工具
开发语言·c++·算法
是wzoi的一名用户啊~1 小时前
【C++小游戏】2048
开发语言·c++
源远流长jerry2 小时前
在 Ubuntu 22.04 上配置 Soft-RoCE 并运行 RDMA 测试程序
linux·服务器·网络·tcp/ip·ubuntu·架构·ip
Sunshine for you2 小时前
C++中的职责链模式实战
开发语言·c++·算法
@我漫长的孤独流浪2 小时前
Python编程核心知识点速览
开发语言·数据库·python
qq_416018722 小时前
C++中的状态模式
开发语言·c++·算法