我试图在 ARM 体系结构上为我的应用程序进行内存泄漏检查,我遇到了一个问题,我使用 malloc 进行了内部泄漏,但这并没有反映在我的堆检查器图中。然后我只写了一个带有 malloc 泄漏的示例 pgm并交叉编译它并在我的设备上运行它没有显示任何泄漏,而我使用 new 运算符进行了相同的泄漏,我可以在分析图形 代码片段上看到泄漏:使用 malloc 泄漏: sample1.c:
#include <stdlib.h>
void f()
{
int *ptr = (int *) malloc(sizeof(int));
// free(ptr);
}
int main()
{
int a=1;
while(a!=10)
{
f();
a++;
// sleep(2);
}
}
使用新的代码片段: new1.cpp
1 // Program with memory leak
2 #include <bits/stdc++.h>
3 using namespace std;
4
5 // function with memory leak
6 void func_to_show_mem_leak()
7 {
8 int* ptr = new int(5);
9
10 // body
11
12 // return without deallocating ptr
13 return;
14 }
15
16 // driver code
17 int main()
18 {
19
20 // Call the function
21 // to get the memory leak
22 func_to_show_mem_leak();
23
24 return 0;
25 }
Sampe1.c :Output 这是我在设备中得到的输出:root@tchxi6:/tmp# HEAPCHECK=normal HEAP_CHECK_MAX_LEAKS=100 TCMALLOC_STACKTRACE_METHOD=libgcc ./sample1 WARNING: Perftools heap leak checker is active -- 性能可能会受到影响有内存区域w /o callers: may report false leaks 没有发现检查“ main ”的泄漏(但不能 100% 保证不存在任何泄漏):找到 13 个 20494 字节的可到达堆对象 root@tchxi6:/tmp#
附上 New1.cpp 文件输出