2011-02-05 4 views
2
void foo() 
{ 
    char *var = kmalloc(1, GFP_KERNEL); 
    return; 
} 

このコードをリークするもので、これとユーザランドのメモリの違いは何リークですこのコードは、これとユーザーランドのメモリの違いは、カーネルレベルのメモリリークが発生します

これは今日のインタビューからの質問です。私はこの質問について悪いことをしました。

+2

カーネルの土地でメモリがリークするだけではありません! –

答えて

6

ユーザスペースでリークされたメモリはプロセス終了時に再利用されますが、カーネルスペースでリークされたメモリはマシンが再起動されるまで再利用できません。

+0

マシンを再起動する必要はなく、実行ユニットだけを再起動する必要があります。その点で、kexecが行います。 – user562374

+1

しかし、何かが 'foo()'を呼び出すとメモリリークだけが発生します... –

関連する問題