c 空指標,野指標

2021-09-24 20:59:43 字數 575 閱讀 9468

當給空指標所指的位址賦值時,會報錯

int *p=nullptr;

*p=10;

int *p;//野指標,未初始化
int *p=new int;

delete p; //刪除後不知道p指向**

#include using namespace std;

class a

;void a::func(void)

void test(void)

p->func(); //應該出錯, a物件已經消失,p為野指標

}int main()

//cout << s << endl; s已經不存在了

*p = 10; //應該出錯, 位址非法

cout << p << endl;

cout << *p << endl;

/*但是編譯器不講道理啊, 編譯執行都是對了, 有不對的嗎? */

return 0;

}

C 空懸指標 野指標

指向已經被釋放的記憶體 或者 指向已經被銷毀的物件。情況一 變數c釋放,dp變成空懸指標 情況二 void func 當free或者delete呼叫時,除了釋放動態申請的記憶體,還要將相關的指標指向null,避免出現空懸指標 情況三 int func void num是基於棧的變數,當func函式返...

c 空指標和野指標

野指標不同於空指標,空指標是指乙個指標的值為null,而野指標的值並不為null,野指標會指向一段實際的記憶體,只是它指向 我們並不知情,或者是它所指向的記憶體空間已經被釋放,所以在實際使用的過程中,我們並不能通過指標判空去識別乙個指標是否為野指標。野指標可能指向乙個可用的,但是正在被使用的空間,如...

指標,野指標,空指標,賦值?

bug中最可怕的是野指標,那麼問題來了,野指標是什麼?是如何產生的?為什麼程式設計師會 忘記 昨天除錯時,我發現了乙個野指標,由此我明白了。a的值成了亂碼,而且gcc編譯器並沒有報錯,那麼請看下面的 那麼我們假設a是指標,一旦我們如同該 一般不讓a指向元素的話,編譯器 必然是會報錯的,那麼我們不如假...