2008-12-04 121 views

回答

5

聲音像一個當前具有NULL值(零)的指針被取消引用。在解除引用前將地址分配給指針。

例如

int x = 5; 
int * x_ptr = NULL; 

x_ptr = &x; // this line may be missing in your code 

*x_ptr += 5; //can't dereference x_ptr here if x_ptr is still NULL 
+0

你的分析是正確的,但代碼中的評論是錯誤的。 * x_ptr + = 5是可以的,因爲x_ptr現在具有x(堆棧地址)的地址,因此可以解除引用。 – ctuffli 2008-12-04 23:34:10

4

這意味着內核試圖尊重一個空指針。這會產生一個內核無法處理的頁面錯誤 - 如果它正在運行一個用戶任務(但是在內核空間中),它通常會產生一個「Oops」,它會(不乾淨地)殺死當前的任務並可能泄漏內核資源。如果在其他情況下,例如一箇中斷,它通常會導致內核恐慌。