从事C++研发的筒子们,最挥之不去可能要算内存泄露带来的痛苦吧,在C++中,虽说其实现底层代码方面所凸显出来的性能要远高于其他类型语言,但是其由于缺乏天生的内存回收机制,从而也被业界予以诟病,那有没有办法能够监测到程序中的内存泄露问题呢,其实是有很多的办法,例如efence ,vagrind类型的工具等,但是这些工具最大的问题就是太重量级了,需要在自己的代码中安插部分调试代码,使用起来也是不很方便,基于此,本人通过学习前人的一些方法,稍微对new,delete进行了重载,基本上实现了检查程序中的内存泄露问题,好了,下面来看代码吧:
#include
#include
#ifndef __MEM_CHECK__H
#define __MEM_CHECK__H
#include
#include
#define MEM_CHECK memCheck() void memCheck(); void* operator new(size_t size,const char* file,int line); void* operator new[](size_t size,const char* file,int line); void operator delete(void* pointer,const char* file,int line); void operator delete[](void* pointer,const char* file,int line); #define MEM_ALLOC new(__FILE__,__LINE__) #define MEM_DELETE delete #endif
测试程序:
#include "MemCheck.h"
struct point
{
point()
{
posX = 0;
posY = 0;
}
int posX;
int posY;
};
int main(int argc,char* argv[])
{
int* pointer = MEM_ALLOC int();
double* doub = MEM_ALLOC double();
std::string* str = MEM