考虑一下这段精简的代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void main()
{
FILE * infile;
char * buffer; // = malloc(sizeof(char));
ssize_t line_length;
size_t nbytes;
int x1;
int x2;
//int x3;
infile = fopen("file.txt", "r");
getline(&buffer, &nbytes, infile);
}
如图所示,代码运行没有错误。
如果我取消注释int x3
,我会得到一个段错误getline
。我在这里向你展示了整个程序——x3
从未使用过,我不知道这个声明有什么意义。
我怀疑这是一个内存分配问题,因为取消注释该= malloc
部分会删除段错误。x3
但是什么会导致和之间的这种相互作用getline
呢?