执行内存泄漏

时间:2014-04-03 05:13:21

标签: c memory-leaks

我使用的是Windows 7 Professional。 我被赋予了一个任务,我需要生成一些系统级问题,以便生成一个事件,我们可以在事件查看器中看到。

我正在测试的产品(公司产品*不能透露)包含一个可以检查或创建内存泄漏警报的飞镖。

我写了一个简单的代码,但我在事件查看器中看不到任何此类事件日志。请建议我至少应该生成的任何工具或任何程序。

我的代码:

#include<malloc.h>
#include<stdio.h>
int main() {
   for(int i = 0; i < 100; i++) {
      int * ptr = (int *) calloc (1000, sizeof(int));   // allocating 40 bytes 
                    // let sizeof int =  4 bytes)
      ptr = NULL;
   }
   return 0;
}

1 个答案:

答案 0 :(得分:0)

我猜测优化程序已删除对calloc的调用,因为从中返回的值根本没有被使用。在致电calloc之后和ptr = NULL;之前添加以下行。

printf("%d\n", ptr[0]);

换句话说,请检查以下程序:

#include<malloc.h>
#include<stdio.h>
int main() {
   for(int i = 0; i < 100; i++) {
      int * ptr = (int *) calloc (10, sizeof(int));     // allocating 40 bytes 
                    // let sizeof int =  4 bytes)
      printf("%d\n", ptr[0]);
      ptr = NULL;
   }
   return 0;
}