1

関数を実行していますが、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 }
4

2 に答える 2

0

割り当てと比較の違いに関する素晴らしいチュートリアルがあります。いつ割り当てを使用し、いつ比較を使用するかを無意識のうちに知ることができるのはとても良いことです。KN King による彼の素晴らしい本 http://www.amazon.com/c/knking"> C Programming: A modern approach. Do read it once. BTW==は以下に分類されます< <= > >= !=

于 2013-03-22T13:04:13.543 に答える