C/C++内存管理

C/C++内存分布
C/C++内存管理_第1张图片

C/C++内存管理_第2张图片

C语言中动态内存管理方式:malloc/calloc/realloc/free
C/C++内存管理_第3张图片

 

C++内存管理方式

C/C++内存管理_第4张图片

C/C++内存管理_第5张图片

operator new与operator delete函数(重要点进行讲解)
C/C++内存管理_第6张图片

C/C++内存管理_第7张图片

new和delete的实现原理

内置类型
C/C++内存管理_第8张图片

定位new表达式(placement-new) (了解)

C/C++内存管理_第9张图片

C/C++内存管理_第10张图片 

常见面试题

C/C++内存管理_第11张图片

C/C++内存管理_第12张图片

如何避免内存泄漏
1. 工程前期良好的设计规范,养成良好的编码规范,申请的内存空间记着匹配的去释放。ps:
这个理想状态。但是如果碰上异常时,就算注意释放了,还是可能会出问题。需要下一条智
能指针来管理才有保证。
2. 采用RAII思想或者智能指针来管理资源。
3. 有些公司内部规范使用内部实现的私有内存管理库。这套库自带内存泄漏检测的功能选项。
4. 出问题了使用内存泄漏工具检测。ps:不过很多工具都不够靠谱,或者收费昂贵。
总结一下:
内存泄漏非常常见,解决方案分为两种:1、事前预防型。如智能指针等。2、事后查错型。如泄
漏检测工具。

 


本文相关注解:

C/C++内存管理_第13张图片

C/C++内存管理_第14张图片

 C/C++内存管理_第15张图片

这样释放会报错,释放位置错了

这样不知道调用多少次析构函数,delete[ ]才知道,导致析构函数内存无法释放

如果没有析构函数则运行正常

你可能感兴趣的:(c语言,c++,开发语言)