编程语言应用

首页 » 常识 » 常识 » WindowsampLinux平台的
TUhjnbcbe - 2021/4/7 0:42:00
北京医院白癜风治疗         https://baike.baidu.com/item/%E5%8C%97%E4%BA%AC%E4%B8%AD%E7%A7%91%E7%99%BD%E7%99%9C%E9%A3%8E%E5%8C%BB%E9%99%A2/9728824?fr=aladdin

内存泄漏是指未能正确释放以前分配的内存的bug。它会因为减少可用内存的数量从而降低计算机的性能;在最糟糕的情况下,过多的可用内存被分配掉导致全部或部分设备停止正常工作,或者应用程序崩溃。

一、Windows平台

一般在vs中,我们利用C运行时(CRT)库来检测和识别内存泄漏。

C运行时库运行原理

内存分配要通过CRT在运行时实现,只要在分配内存和释放内存时分别做好记录,程序结束时对比分配内存和释放内存的记录就可以确定是不是有内存泄漏。说白了,定位的关键:对应用程序的内存状态拍快照。

示例

#define_CRTDBG_MAP_ALLOC

#includestdlib.h

#includeiostream

#includecrtdbg.h

usingnamespacestd;

_CrtMemStates1,s2,s3;

voidgetMemory(char*p,intnum)

{

p=(char*)malloc(sizeof(char)*num);

}

int_tmain(intargc,_TCHAR*argv[])

{

_CrtMemCheckpoint(s1);

char*str=NULL;

getMemory(str,);

_CrtMemCheckpoint(s2);

if(_CrtMemDifference(s3,s1,s2))

_CrtMemDumpStatistics(s3);

cout"memoryleaktest."endl;

_CrtDumpMemoryLeaks();

return0;

}

我们也可以利用processhacker管理工具来查看内存泄露。

二、Linux平台

内存泄露检测工具valgrind。

1
查看完整版本: WindowsampLinux平台的