預防野指標

2021-09-26 01:12:02 字數 1034 閱讀 8563

野指標,是看上去指向合法記憶體,實際該記憶體已經釋放;或未初始化的指標。

"野指標"的成因主要有3種:

(1)指標變數未被初始化。任何指標變數被建立時不會自動成為null指標,它的預設值為隨機。

指標變數在建立的同時必須被初始化。

char

*p =

null

;//將指標設定為null

char

*str = new char

(100);

//將指標指向定義變數

(2)指標p被free(釋放)或者delete(刪除)之後,沒有置為null;

當指標沒有使用價值時,記得釋放,釋放成功後記得為該指標賦值null。

if

(null

!= p)

//檢驗使用完指標後,釋放該指標所指向的記憶體。

(3)指標操作越出變數的作用範圍:

class a};

void

test

(void

) p->

func()

;//p未被初始化

}

(4)可以使用引用替代指標:

引用具有指標的功能,同時具有普通變數的功能。引用的變數必須真實存在。引用作為函式的輸入引數比指標更直接的效果。

void

swap

(int

*p1,

int*p2)

//指標實現兩數交換

void

swap

(int

&p1,

int&p2)

//引用實現兩數交換

5)使用智慧型指標:

如果不同物件都需要訪問堆上的同乙份指標,智慧型指標可以有效地避免野指標。用智慧型指標(推薦shared_ptr)進行包裝,不同物件可擁有智慧型指標包裝後的指標,每次訪問之前使用智慧型指標的方法_expired進行指標的有效性檢查,如果失敗,則表明該物件已經被釋放。

什麼是野指標?野指標的危害?如何避免野指標?

什麼是野指標?野指標是指隨機指向一塊記憶體的指標 野指標的危害?如何避免野指標?我們要在以後養成良好的編碼習慣 1.將沒有指向的指標初始化指向null 指向null的指標不能對他的指向進行修改 2.當想給乙個指標指向的空間賦值時,一定要給這個指標分配空間 malloc 3.當空間分配完後,要檢查這個...

什麼是野指標?如何避免野指標?

野指標不是 null指標,它是隨即指向一塊記憶體的指標。野指標是很危險的,會導致記憶體洩漏,if語句對它不起作用。導致野指標的原因有兩種 1 野指標指向了一塊沒有訪問許可權的記憶體。即指標沒有初始化 2 野指標指向了乙個已經釋放的記憶體。因為野指標是因為我們的不良程式設計習慣造成的,所以我們養成良好...

關於野指標

什麼是野指標?例如 int p 或 int p new int 1 int i 3 p i delete p 像上面的例子所示的,沒有對p申請指定的訪問記憶體區域 也就是說p指標的指向是隨機的,指向的是記憶體空間的隨機位址 或是p 指向乙個已刪除的物件,出現像這樣的指標成為野指標。野指標的危害 就是...