什麼是野指標以及如何避免野指標?大魚12505662019-09-13 08:09:14

野指標的產生及如何避免野指標

野指標的定義及產生:

野指標指向一個已刪除的物件或未申請訪問受限記憶體區域的指標。與空指標不同,野指標無法透過簡單地判斷是否為 NULL避免,而只能透過養成良好的程式設計習慣來盡力減少。以char *p型別指標為例說明。

避免訪問野指標的方法:

1。任何指標變數剛被建立時不會自動成為NULL指標,它的預設值是隨機的,它會亂指一氣。所以,指標變數在建立的同時應當被初始化,要麼將指標設定為NULL,要麼讓它指向合法的記憶體。

申請後初始化或立馬malloc:

char *p;int a;

p = NULL;

或p = &a;

或:p = (char *)malloc(sizeof(char) * 8);

memset(p,0,8);

2。 釋放後清零

針對存放新malloc記憶體地址的p,不使用時必須透過free(p)來釋放該段記憶體的使用權,但蛋蛋free是不夠的,free後p中值(原記憶體地址)不會自動變化。故必須p = NULL;避免誤訪問已經沒有使用權的記憶體。