C/C++中的内存管理小结

2020-05-12 11:57:18王冬梅

程序执行中依据须要分配通过malloc / calloc / realloc / new等从堆中分配的一块内存,
用完后必须通过调用相应的 free或者delete 删掉。假设程序的设计错误导致这部分内存没有被释放,那么以后这部分空间将无法再被使用,就会产生堆内存泄漏。

系统资源泄漏

程序使用系统分配的资源,比方套接字、文件描述符、管道等没有使用对应的函数释放掉,导致系统
资源的浪费,严重可导致系统效能减少,系统执行不稳定,产生了系统资源泄露。

5.2 如何检测内存泄露

在linux下内存泄漏检测
valgrind、mtrace、dmalloc、memwatch、mpatrol、dbgmem、Electric Fence

在windows下内存泄漏检测
VLD

5.3 如何避免内存泄漏

1.工程前期良好的设计规范,养成良好的编码规范,申请的内存空间记着匹配的去释放。

2.采用RAII思想或者智能指针来管理资源。

5.4 如何在堆上一次申请4G空间

原因:申请失败一般是因为进程地址空间不够大。

解决办法:换用64位的进程地址空间。

到此这篇关于C/C++中的内存管理小结的文章就介绍到这了,更多相关C++ 内存管理内容请搜索易采站长站以前的文章或继续浏览下面的相关文章希望大家以后多多支持易采站长站!