• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 實用小代碼之內存泄漏檢測

    發表于:2008-02-13來源:作者:點擊數: 標簽:內存泄漏
    相信很多人在用 C 語言編寫程序時,常常會用到動態內存分配的函數。而使用這樣的函數,往往會一不留神就造成內存泄漏。雖然說世面上有很難多檢查內存泄漏的工具,功能也很強大。不過我平時用的簡單檢測方式是使用我這里介紹的這三個函數。相對來說,還是比較
     相信很多人在用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;
    }

    Linux)" name=GENERATOR>

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

    下面是事例代碼:

    int fun(void){
        
    void *p=NULL;
        
    int *c=_mem_check();
        p
    =_malloc(1024);
        _free(p);
        printf(
    "%d ",*c);
        
    return(0);
    }


    文外音:
        說實話,我的Blog很久沒有更新了。說來也慚愧,這一階段真的很忙。原本的生活也被打亂了。上面這些東西,都是我平時寫程序的時候常會用到的一些代碼。覺得蠻實用的就貼出來和大家分享一下。 
        不過話說回來,近階段發生的事情還真不少。前些日子我一同學買東西,被黑心老板找了張假的20元,因為當時天冷急著回去。所以沒仔細看就收進了。事后我們和他理論,那黑心老板居然還一臉壞笑地大聲說:“哦,這是張假幣啊。是假幣哦。這張假幣不是我們這里出來的?!蹦潜砬槲疫@一輩子也忘不了,意思就是說:我就是要把假幣混給你,你能拿我怎么辦。當時很氣憤,想報警的,因為使用假幣也是屬于違法行為。但是后來想想為了20元也犯不著。其實到也不是說20元的損失有多大,只是實在是對他們那種態度和素質感到令人作嘔。

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>