【发布时间】:2019-02-24 18:02:03
【问题描述】:
#include <stdlib.h>
#include <stdio.h>
int main(void)
{
char string[10];
int count = 0;
int buff = 1;
int i = 0;
char **test = malloc(sizeof(char*) * buff);
while (1) {
scanf("%s", string);
count++;
if (count > buff) {
buff += buff;
test = realloc(test, buff);
test[i] = string;
i++;
}
else {
test[i] = string;
i++;
}
}
}
这只是一个更大的项目的一些测试代码,我正在处理同样的问题(因此为什么 buff 这么小)。我不知道为什么,但 realloc() 在 ~2-3 次调用后失败。任何的想法?
【问题讨论】:
-
显然我使用的字符串少于 10 个字符,而 while 循环是非终止的,仅用于调试
-
旁白:所有的指针都会指向同一个(最后输入的)字符串值。
-
@P__J__ 你在我打字时添加了补救措施 - 我没有注意到传递的评论。
-
永远不要将
realloc的返回值直接赋值给block,因为它可能返回NULL,之前的所有数据都会丢失。