6

私はLinuxモジュールを書いていて、以下を取得しています:

Unable to handle kernel NULL pointer dereference

どういう意味ですか?

4

3 に答える 3

7

現在 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
于 2008-12-04T17:28:36.113 に答える
4

これは、カーネルがヌル ポインターを参照しようとしたことを意味します。これにより、カーネルで処理できないページ フォールトが生成されます。ユーザー タスクを (ただしカーネル空間で) 実行している場合、通常は "Oops" が発生し、現在のタスクが (不潔に) 強制終了され、カーネル リソースがリークする可能性があります。割り込みなどの他のコンテキストにある場合は、通常、カーネル パニックが発生します。

于 2008-12-04T18:12:27.273 に答える
4

カーネルは address から読み取ろうとしますが0、これは明らかにカーネルが特別に扱っているようです (良いことです!)。ユーザーモードのアプリケーションからわかるように、カーネルには自分自身を強制終了する方法がないため (これらのアプリケーションはSegmentation Faultを受け取ります)、このエラーは致命的です。おそらくパニックになり、そのメッセージが表示されます。


http://en.wikipedia.org/wiki/Null_pointer#The_null_pointer

于 2008-12-04T17:31:46.590 に答える