C C 中野指標的問題

2021-06-22 20:16:14 字數 557 閱讀 8352

野指標是什麼,簡單的說就是當你釋放申請的記憶體時,沒有把指標清空,指標依然存在。只不過指標指向的記憶體區不屬於他。

野指標會在退出程式時銷毀

打個比方,你有乙個房子,你賣掉了,但是你依然可以用你備用的鑰匙來開啟,儘管房子不是你的(呵呵);這是很危險的。

野指標如何產生?如何避免?

當我們在定義乙個指標的時候,如果沒有給指標賦初值,就會產生野指標。

所以定義指標如最好賦初值。如 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 的時候就遇到了這個...