基本思路就是跟踪程序中的malloc和free调用,然后检测是否有漏掉的free调用,代码如下:
MemCheck.h
#ifndef __MEM_CHECK_H__
#define __MEM_CHECK_H__
#include <cstddef>
void* _Malloc_Trace_Call_(std::size_t MemSize, const char* SourceFile, int LineNumber, std::size_t Alignment = 0);
void _Free_Trace_Call_(void* Ptr, std::size_t Alignment = 0);
void DumpMemoryInfo();
#undef malloc
#define malloc(Size) _Malloc_Trace_Call_(Size, __FILE__, __LINE__)
#undef free
#define free(Ptr) _Free_Trace_Call_(Ptr)
#undef _mm_malloc
#define _mm_malloc(Size, Alignment) _Malloc_Trace_Call_(Size, __FILE__, __LINE__, Alignment)
#undef _mm_free
#define _mm_free(Ptr) _Free_Trace_Call_(Ptr, 1)
#endif
MemCheck.cpp
#include <iostream>
#include <cstdlib>
#includ