野指標是什麼,簡單的說就是當你釋放申請的記憶體時,沒有把指標清空,指標依然存在。只不過指標指向的記憶體區不屬於他。
野指標會在退出程式時銷毀
打個比方,你有乙個房子,你賣掉了,但是你依然可以用你備用的鑰匙來開啟,儘管房子不是你的(呵呵);這是很危險的。
野指標如何產生?如何避免?
當我們在定義乙個指標的時候,如果沒有給指標賦初值,就會產生野指標。
所以定義指標如最好賦初值。如 int *a=null;
當我們釋放掉指標時(用free或delete時),如果沒有清空指標也會產生野指標。
所以:free(p);
p=null;
看一下以下**。
char *str=null;
str=(char *)malloc(10);//給指標分配10位元組記憶體
strcpy(str,"abc");//給str賦值
free(str);
cout我們知道儘管釋放了指標*str,但是在沒有清空之前還是可以讀取str*指標的記憶體區讀取資料的。但是輸出的是亂碼,因為記憶體改變。
C C 中野指標產生的問題
指標變數未初始化 任何指標變數剛被建立時不會自動成為null指標,它的預設值是隨機的,它會亂指一氣。所以,指標變數在建立的同時應當被初始化,要麼將指標設定為null,要麼讓它指向合法的記憶體。指標釋放後之後未置空 有時指標在free或delete後未賦值 null,便會使人以為是合法的。別看free...
野指標問題
最近在看之前的 對之前的bug有些新的認識,這裡總結下,學疏才淺,跟大家分享下吧。首先是用到了乙個傳送函式 static int send fun uint16 t length,uint8 t data 需要根據不同的條件判斷傳送的資料 data 以下實現是錯誤的 int judge send f...
野指標問題
關於這一點本來是不想寫的,一直覺的是些旁枝末葉的東西,很容易就能掌握,或者說不會犯錯的地方,但這兩天敲 的時候就遇到了這樣的問題,或者說不容易犯錯的地方才最容易犯錯吧!下面切入正題 何為野指標,對乙個指向空位址的指標我們將其稱為野指標,即所指向的位址不能進行操作的指標 這兩天寫c 的時候就遇到了這個...