野指針的處理

野指針處理的三個要點:

  1. 定義指針時,把指針變量賦值爲NULL
  2. 釋放內存時,先判斷指針變量是否爲NULL
  3. 釋放完畢後,把指針變量重新賦值爲NULL
#include <stdio.h>
#include <stdlib.h>

void free_mem(char *p)
{
    if (p != NULL){
        free(p);
        p = NULL;       // 這裏的p只是形參,把NULL賦給形參並不影響實參
                        // 所以當函數執行完後,實參pa的值並不爲NULL
    }
}



int main(void)
{
    char *pa = NULL;

    pa = (char *)malloc(100);

    free_mem(pa);

    return 0;
}

如果最後在main函數裏面調用兩次free_mem,程序就會報錯,因爲此時pa不爲NULL,執行free(pa)會釋放掉一塊已經釋放了的內存

發佈了39 篇原創文章 · 獲贊 22 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章