【发布时间】:2020-01-08 08:50:10
【问题描述】:
我正在尝试从文件中读取并将每行的指针放入双指针“堆栈”,但总是无法重新分配它。也许我应该使用三重指针????
int i = 1;
char * line = malloc(BUFSIZ);
char ** stack;
stack = (char ** ) malloc(sizeof(char * ));
while (fgets(line, BUFSIZ, file) != NULL) {
stack = & line;
printf("//%s", line);
printf("??%s", * stack);
i++;
stack = (char ** ) realloc(stack, sizeof(char * ) * i);
}
【问题讨论】:
-
你怎么知道它失败了?
-
你觉得这个:
stack=&line;对你(重新)分配的指针有什么影响? -
@JJK ZH 提供的代码没有意义。它有内存泄漏和这个语句 stack=&line;不分配内存。
-
@Vlad 我认为(但显然不知道)OP正试图使用它将数据从
line复制到“在堆栈的某个地方?” -
您确实需要阅读有关分配和指针的教程。我开始写一个答案,但是这段代码充满了缺陷。另外,Don't cast malloc
标签: c memory-management fgets c-strings realloc