我正在运行一个函数,但在第 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 }