C語言野指標分析

2021-07-27 09:40:48 字數 805 閱讀 3604

1.

野指標的概念

所謂的野指標,就是說指標指向的那塊記憶體,你沒有合法操作的許可權,也就是指標指向非法的記憶體空間,這樣的指標就叫做野指標。

2. 野指標產生的原因

(1) 

指標變數未初始化

任何指標變數剛被建立時不會被自動置為null,它的預設值是隨機的,所以這塊記憶體,所以指標變數在建立時,要麼初始化讓它指向一塊合法的記憶體,要麼置為null。

#include

#include

int main(void)

(2) 

指標指向的記憶體釋放後之後未置空

指標指向的記憶體被free或者delete釋放後,指標的值仍然為剛剛被釋放的那塊記憶體的首位址,但是此時指標已經失去了對那塊記憶體的合法訪問許可權,所以在free或delete一塊記憶體後,要及時把指標置為null。

#include

#include

int main(void)

(3) 

指標操作超越變數作用域

不要返回指向棧記憶體的指標或引用,因為棧內存在函式結束時會被釋放。

#include

#include

char *getstr()

int main(void)

關鍵點:

上面的程式在執行時可能並不會產生錯誤,但並不代表這樣做是正確的,理解野指標的關鍵,就是指標指向的記憶體是否可以被合理合法訪問。

3. 避免產生野指標

(1) 初始化時置 null

(2) 指標指向的記憶體釋放後之後將指標置為空

c語言野指標

1.什麼是野指標 野指標是隨機指向一塊記憶體的指標,容易造成記憶體洩露。但不一定每次都會產生段錯誤,因為可能分配到已經分配或申請過的位址。2.如何避免野指標 避免野指標需要養成一下良好的編碼習慣 1 當指標沒有指向時,給它置為空 0位址 null 因為在作業系統中,不能對0位址進行任何操作 置為空 ...

C語言記憶體(野指標 )

1.堆 在鍊錶中找接近4位元組的空間,發現 5位元組接近 4位元組,將 5位元組給程式。2.靜態儲存區 編譯時就存在 儲存全域性變數和靜態區域性變數 3.野指標 1 區域性指標變數沒有初始化 struct student char name int number int main struct st...

C語言中野指標總結

野指標是什麼?野指標是如何產生的?有什麼危害?如何避免野指標?是什麼 野指標是什麼?野指標,就是指標指向的位置是不可知的 隨機的 不正確的 沒有明確限制的 很可能觸發執行時段錯誤 sgmentation fault 例如 int p 區域性變數,分配在棧上,棧反覆被使用,所以 值是隨機的 print...