【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 
相关推荐
码农新猿类11 分钟前
信号量函数
linux·c++·visual studio
·醉挽清风·14 分钟前
学习笔记—双指针算法—移动零
c++·笔记·学习·算法
yyywxk15 分钟前
Matlab 报错:尝试将 SCRIPT vl_sift 作为函数执行:
开发语言·matlab
码上飞扬17 分钟前
Java大师成长计划之第5天:Java中的集合框架
java·开发语言
艾醒(AiXing-w)19 分钟前
探索大语言模型(LLM):自监督学习——从数据内在规律中解锁AI的“自学”密码
人工智能·学习·语言模型
Bob999824 分钟前
三大浏览器(Firefox、Opera、Chrome)多个Profile管理!
开发语言·javascript·eclipse·sqlite·ecmascript·hbase
Frankabcdefgh32 分钟前
前端面试 js
开发语言·javascript·原型模式
EnigmaCoder40 分钟前
java面向对象编程【高级篇】之多态
java·开发语言
山猪打不过家猪44 分钟前
(六)RestAPI 毛子(外部导入打卡/游标分页/Refit/Http resilience/批量提交/Quartz后台任务/Hateoas Driven)
网络·缓存
秋名RG44 分钟前
浅谈Java 内存管理:栈与堆,垃圾回收
java·开发语言·jvm