2008-12-04 12 views

Répondre

5

Ressemble à un pointeur qui a actuellement la valeur NULL (zéro) en cours de déréférencement. Attribuez une adresse au pointeur avant de le déréférencer.

par exemple.

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

Votre analyse est correcte, mais le commentaire dans le code est erroné. * x_ptr + = 5 est OK car x_ptr a maintenant l'adresse de x (une adresse de pile) et peut donc être déréférencé. – ctuffli

4

Cela signifie que le noyau a essayé de déférence un pointeur NULL. Cela génère une erreur de page qui ne peut pas être gérée dans le noyau - s'il exécute une tâche utilisateur (mais dans l'espace noyau), il crée généralement un "Oups" qui tue la tâche en cours et peut fuir les ressources du noyau. Si c'est dans un autre contexte, par ex. une interruption, elle provoque généralement une panique du noyau.