什麼是野指標以及如何避免野指標?
大魚1250566 發表于 健康2021-12-27
野指標的產生及如何避免野指標
野指標的定義及產生:
野指標指向一個已刪除的物件或未申請訪問受限記憶體區域的指標。與空指標不同,野指標無法透過簡單地判斷是否為 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;避免誤訪問已經沒有使用權的記憶體。