0

我试图在 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 文件输出
在此处输入图像描述

4

0 回答 0