2008-12-04 172 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”,它会(不干净地)杀死当前的任务并可能泄漏内核资源。如果在其他情况下,例如一个中断,它通常会导致内核恐慌。