扫码关注官方订阅号
C/C++中在对一个指针指向的内存调用free函数后,指针的值不变。那么这个指针指向的内存的值变不变呢?系统如何标记这段内存已经不再使用可以重新分配了呢?malloc free new delete操作在操作系统级别上发生了什么呢?
学习是最好的投资!
在使用free()以后,指针的值没有变,但是指针所指向的地址的内容已经被标记为不可以使用,留作重新分配使用。 使用malloc的时候,实际系统只是记录了你申请的空间大小,但没有真的分配足够的空间,当你真的使用这段申请的指针地址时,操作系统会产生一个错误,标示现在有需要申请一段可用的内存了 new实际是在malloc的基础上申请了空间,并且初始化了这段空间,因此系统将这段内存已经实际创建完成了 delete不太清楚
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
在使用free()以后,指针的值没有变,但是指针所指向的地址的内容已经被标记为不可以使用,留作重新分配使用。
使用malloc的时候,实际系统只是记录了你申请的空间大小,但没有真的分配足够的空间,当你真的使用这段申请的指针地址时,操作系统会产生一个错误,标示现在有需要申请一段可用的内存了
new实际是在malloc的基础上申请了空间,并且初始化了这段空间,因此系统将这段内存已经实际创建完成了
delete不太清楚