関数を実行していますが、10 行目でエラーが発生します。gdb でデバッグすると、ptr が 0x0 を指していることがわかります。これは、無効な住所の場所に関する何かを指していると思います。これはなぜですか、どうすればコードを再度修正できますか。ありがとうございました
1  static char *kstrdup(const char *buf)
2  {
3     char *ptr, *ret;
4 
5     ret = ptr = kmalloc(strlen(buf) + 1);
6     if ((ptr = NULL))
7         panic("kmalloc returned NULL");
8 
9     for (; *buf != '\0'; ++ptr, ++buf)
10        *ptr = *buf;
11
12    *ptr = '\0';
13
14    return ret;
15 }