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.當空間分配完後,要檢查這個...