我正在尝试运行这个程序,其中创建一个字符数组并动态分配内存。稍后,数组元素将填充 10 个连续位置的字符串“hello”。使用 strdup() 函数调用将值分配给字符串元素。
一旦分配了所有元素,这些元素就会在 while 循环中释放。当我在 Visual Studio 中运行程序时,程序在最后一个指向 char 数组的指针被释放后崩溃。我相信 while 循环的终止条件是正确的。但我无法确定究竟是什么导致了这个问题。
代码:
char **p;
int i;
p = malloc(10 * sizeof(char *));
for (i = 0; i < 10; i++) {
p[i] = strdup(“hello”);
}
while (*p) {
free(*p++);
}