野指標的產生及其避免
null
避免,而只能通過養成良好的程式設計習慣來盡力減少。對野指標進行操作很容易造成程式錯誤。
總的來說,野指標是一種記憶體錯誤。其產生的原因主要有一下幾點: 1
:(訪問了不該訪問的記憶體);
如果我們的指標變數沒有被我們初始化,系統會為我們的編譯器隨機為我們的指標指定記憶體。既然是系統隨機的指定,那麼我們在後面的取值或者取位址操作,都會是乙個隨機的記憶體中的值。這時候編譯器會報段錯誤。 2
;訪問了已經釋放的記憶體;
如果我們在乙個指標變數的記憶體已經釋放的時候去訪問該記憶體或者改記憶體中儲存的資料,我們就會出現錯誤。這時候編譯器會報段錯誤。
如何避免野指標造成的記憶體洩漏? 1
:在定義指標的時候,為我們的指標初始化為
null;//
如初始化為
null
(void *)0
;(萬能指標,其中的用法可以參考我的其他部落格) 2
:可以用
malloc
函式為指標分配堆空間,具體操作如下:
char *ptr = (char *)malloc
(sizeof
(char
)* 100);
if(ptr == null)
bzero(ptr,sizeof
(char
)* 100); //
或memset(ptr ,』\0』,sizeof(char) * 100);
清空記憶體
scanf(「%s」,ptr);
printf(「ptr = %s\n」,ptr);
free(ptr); //用完釋放
ptr == null; //釋放後指向null,可以提示你。
以上就是個人的一些見解,希望可以幫到你。
野指標產生的原因和避免方法
struct student stu,pstu intmain void 這是很多人都容易犯的錯誤 定義了結構體變數stu,但結構體內部的char name在定義結構體時只是為其分配了4位元組的記憶體,沒有指向乙個合法的位址,這時其指標指向的區域只是一些亂碼,有事還沒有訪問許可權。這就是我們通常所說...
如何避免野指標?
野指標是指隨機訪問了記憶體空間,歸根到底是由於不良的編碼習慣,有個良好的程式設計習慣是避免 野指標 的唯一方法。如何避免野指標 1 初始化 char p null 為何賦值為 null 一是null 是乙個巨集,高亮,檢查段錯誤的時候比較顯眼。二是 null 為值,不能對 null 值賦值或者訪問。...
野指標如何避免
先看一段 struct student stu,pstu int main void 這是很多人都容易犯的錯誤 定義了結構體變數stu,但結構體內部的char name在定義結構體時只是為其分配了4位元組的記憶體,沒有指向乙個合法的位址,這時其指標指向的區域只是一些亂碼,有事還沒有訪問許可權。這就是...