private:
char* file;
int line;
};
当然,也可以用函数来返回char*指针
[cpp]
int g_count = 0;
class OperNew
{
public:
OperNew()
{
g_count ++;
pC = new char[20];
memset(pC, 0, 10);
sprintf(pC, "No.%d", g_count);
}
char* GetChar()
{
return pC;
}
private:
char * pC ;
};
这样就能返回自定义的内容了。本次的返回加上了一个构造时候的序号,当然也可以添加时间等。结果如下:
e:\project\test\test_mem_leak\test_mem_leak\test_mem_leak.cpp(95) : 11 (95) : {123} normal block at 0x002B4C78, 400 bytes long.
Data: < > CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD
e:\project\test\test_mem_leak\test_mem_leak\test_mem_leak.cpp(92) : 10 (92) : {122} normal block at 0x002B4C30, 9 bytes long.
Data: < > CD CD CD CD CD CD CD CD CD
e:\project\test\test_mem_leak\test_mem_leak\test_mem_leak.cpp(92) : 9 (92) : {121} normal block at 0x002B4BE8, 8 bytes long.
Data: < > CD CD CD CD CD CD CD CD
e:\project\test\test_mem_leak\test_mem_leak\test_mem_leak.cpp(92) : 8 (92) : {120} normal block at 0x002B9F88, 7 bytes long.
Data: < > CD CD CD CD CD CD CD
e:\project\test\test_mem_leak\test_mem_leak\test_mem_leak.cpp(92) : 7 (92) : {119} normal block at 0x002B9F40, 6 bytes long.
Data: < > CD CD CD CD CD CD
e:\project\test\test_mem_leak\test_mem_leak\test_mem_leak.cpp(92) : 6 (92) : {118} normal block at 0x002B9EF8, 5 bytes long.
Data: < > CD CD CD CD CD
e:\project\test\test_mem_leak\test_mem_leak\test_mem_leak.cpp(92) : 5 (92) : {117} normal block at 0x002B9EB8, 4 bytes long.
Data: < > CD CD CD CD
e:\project\test\test_mem_leak\test_mem_leak\test_mem_leak.cpp(92) : 4 (92) : {116} normal block at 0x002B9E78, 3 bytes long.
Data: < > CD CD CD
e:\project\test\test_mem_leak\test_mem_leak\test_mem_leak.cpp(92) : 3 (92) : {115} normal block at 0x002B9E38, 2 bytes long.
Data: < > CD CD
e:\project\test\test_mem_leak\test_mem_leak\test_mem_leak.cpp(92) : 2 (92) : {114} normal block at 0x002B9DF8, 1 bytes long.
Data: < > CD
e:\project\test\test_mem_leak\test_mem_leak\test_mem_leak.cpp(92) : 1 (92) : {113} normal block at 0x002B9DB8, 0 bytes long.
Data: <> h鴌
e:\project\test\test_mem_leak\test_mem_leak\test_mem_leak.cpp(88) : 0 (88) : {112} normal block at 0x002B9D50, 40 bytes long.
Data: <0L+ > 30 4C 2B 00 CD CD CD CD CD CD CD CD CD CD CD CD
Object dump complete.
程序"[8796] test_MEM_LEAK.exe: 本机"已退出,返回值为 -1073741510 (0xc000013a)。
小提示:
将输出文件拷贝到UE中,然后查找泄露行号出现的次数,可以计算出泄露的数目。