【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 
相关推荐
wjs20241 分钟前
C 标准库 - `<float.h>》详解
开发语言
五仁火烧5 分钟前
生产环境中配置了接口3000后,不能启动,改成8080后就可以
linux·网络·安全·vue
zfj3218 分钟前
CyclicBarrier、CountDownLatch、Semaphore 各自的作用和用法区别
java·开发语言·countdownlatch·semaphore·cyclicbarrier
张np15 分钟前
java基础-ConcurrentHashMap
java·开发语言
橙露16 分钟前
国产PLC与进口PLC全面对比分析:技术、市场与未来趋势
运维·网络
早日退休!!!16 分钟前
进程与线程的上下文加载_保存及内存映射
开发语言
jllllyuz17 分钟前
MATLAB实现蜻蜓优化算法
开发语言·算法·matlab
冰暮流星33 分钟前
javascript逻辑运算符
开发语言·javascript·ecmascript
flysh0533 分钟前
如何利用 C# 内置的 Action 和 Func 委托
开发语言·c#
chilavert3181 小时前
技术演进中的开发沉思-302计算机原理:网络基础
网络·计算机原理