實用小代碼之內存泄漏檢測

        相信很多人在用C語言編寫程序時,常常會用到動態內存分配的函數。而使用這樣的函數,往往會一不留神就造成內存泄漏。雖然說世面上有很難多檢查內存泄漏的工具,功能也很強大。對於簡單檢測方式,這三個函數,相對來說,還是比較不錯的,也是一種解決內存泄漏問題的方法之一吧。 

int *_mem_check(void)...{
  
static int c=0;
  
return(&c);
}

void *_malloc(int s)...{
  
int *c=_mem_check();
  
void *p=malloc(s);
  
if(p)...{
    (
*c)++;
  }

  
return(p);
}

void _free(void *p)...{
  
int *c=_mem_check();
  free(p);
  
if(p)...{
    (
*c)--;
  }

  
return;
}

        代碼很簡單,基本上不用做太多的解釋。只要在程序退出之前查看一下計數器的計數是否爲0就可以了。如果是0的話,那很好,你所寫的代碼沒有內存泄漏。如果不爲0的話,這個計數器的數,就是記錄了你有多少個內存分配沒有在程序退出前回收。

int fun(void)...{
    
void *p=NULL;
    
int *c=_mem_check();
    p
=_malloc(1024);
    _free(p);
    printf(
"%d ",*c);
    
return(0);
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章