<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      Linux系統中怎么使用valgrind檢查內存

      [摘要]在使用Linux系統編寫代碼過程中,有可能會發送內存泄露的問題。所以用戶就應該要學會檢查內存,那么Linux如何檢查內存呢?一般都是使用一些工具,本文就來介紹一下Linux系統中怎么使用valgri...

        在使用Linux系統編寫代碼過程中,有可能會發送內存泄露的問題。所以用戶就應該要學會檢查內存,那么Linux如何檢查內存呢?一般都是使用一些工具,本文就來介紹一下Linux系統中怎么使用valgrind檢查內存。

      Linux系統中怎么使用valgrind檢查內存

        請看一下代碼:

        #include 《stdlib.h》

        #include 《stdio.h》

        #include 《string.h》

        static void mem_leak1(void)

        {

        char *p = malloc(1);

        }

        static void mem_leak2(void)

        {

        FILE *fp = fopen(“test.txt”, “w”);

        }

        static void mem_overrun1(void)

        {

        char *p = malloc(1);

        *(short*)p = 2;

        free(p);

        }

        static void mem_overrun2(void)

        {

        char array[5];

        strcpy(array, “hello”);

        }

        static void mem_double_free(void)

        {

        char *p = malloc(1);

        free(p);

        free(p);

        }

        static void mem_use_wild_pointer(void)

        {

        char *p = (void*)0x80184800;

        *p = 1;

        }

        static void mem_free_wild_pointer(void)

        {

        char *p;

        free(p);

        }

        int main()

        {

        mem_leak1();

        mem_leak2();

        mem_overrun1();

        mem_overrun2();

        mem_double_free();

        //mem_use_wild_pointer();

        mem_free_wild_pointer();

        return 0;

        }

        常見的內存問題:

        1. 動態內存泄露;

        2. 資源泄露,這里以文件描述符為例;

        3. 動態內存越界;

        4.數組內存越界;

        5.動態內存double free;

        6.使用野指針,即未初始化的指針;

        7.釋放野指針,即未初始化的指針;

        其中由于本示例代碼過于簡單,第6中情況,使用野指針會直接導致crash,所以在main中,并沒有真正的調用那個示例代碼。由于 valgrind只能檢測執行到的代碼,所以在后面的報告中,不會報告第6種錯誤情況。但是,在大型的項目中,有可能使用野指針并不會導致程序 crash。另外上面的7中情況,有些情況嚴格的說,實際上可以歸為一類。

      Linux是一套免費使用和自由傳播的類Unix操作系統




      日韩精品一区二区三区高清