在C语言程序中,一般用_CrtSetBreakAlloc() 来检测内存泄漏。括号里面是内存块的number。
当设置之后,如果有检测到这个块有内存泄漏,就会停在这个地方,等待用户去检查。一般如果想取消的话,就直接把数字设置为0;
设置方法为: debug进程序中,shift + F9 键进入watch,输出函数,点击recalculate即可。只需设置一次,就可以了。一般不用在VS
的下面的quick watch中设置,因为这样可能会设置很多的断点。
详细的例子以后会补充上。
补充:
由于-CrtsetbreakAlloc()是基于线程的方式来对全局的heap空间做‘统计’,所以必然会导致在多线程的情况下,产生误报的情况。
这种情况下,一般采用UMDH来检测,最好在process的最开始就设置断点。结果中存在很多重复的地方,那么就是内存泄漏的地方。