野指標的定義和避免

2021-07-15 08:07:28 字數 707 閱讀 5617

1.我們知道在程式中使用了乙個野指標,會引起程式出錯,造成段錯誤。下面我舉乙個例子指出野指標

#include int main()

下面我對*str進行賦值,會出現什麼後果呢?

[root@localhost 0720]# ./a.out 

input a str

hello

段錯誤

我們看到執行結果出現了段錯誤!那是因為str是野指標。

那什麼是野指標呢?野指標就是隨機指向一塊記憶體的指標。如果乙個指標被定義成了野指標,那對這個指標的使用的危害是多麼的大,它可能改變程式中任何地方的值。

那到底是造成野指標的原因有哪些?

a.指標指向一塊已經釋放的記憶體。

b.指標指向一塊沒有訪問許可權的記憶體。

下面我們來講講怎麼來避免野指標:

a.給指標賦值的時候,先檢查指標是否分配了合理的記憶體空間。

b.釋放記憶體的指標要給指標賦值為null。(編碼規範)

比如:

#include #include int main()

[root@localhost 0720]# ./a.out

input a str

hello

hello

在堆上分配了空間,就避免了野指標。

如何避免野指標?

野指標是指隨機訪問了記憶體空間,歸根到底是由於不良的編碼習慣,有個良好的程式設計習慣是避免 野指標 的唯一方法。如何避免野指標 1 初始化 char p null 為何賦值為 null 一是null 是乙個巨集,高亮,檢查段錯誤的時候比較顯眼。二是 null 為值,不能對 null 值賦值或者訪問。...

野指標如何避免

先看一段 struct student stu,pstu int main void 這是很多人都容易犯的錯誤 定義了結構體變數stu,但結構體內部的char name在定義結構體時只是為其分配了4位元組的記憶體,沒有指向乙個合法的位址,這時其指標指向的區域只是一些亂碼,有事還沒有訪問許可權。這就是...

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

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