この質問は間違いなくこれに関連しており、その答えは私が自分の機能の基にしたものです。
char *get_next_line(FILE *fp) {
char ch = 0;
int CUR_MAX = 4095;
char *buffer = (char*) malloc(sizeof(char) * CUR_MAX); // allocate buffer.
char *temp = (char*) malloc(sizeof(char) * CUR_MAX); // allocate buffer.
int count = 0;
int length = 0;
while ((ch != '\n')) {
if (ch == '\377') { return NULL; }
if(count ==CUR_MAX) {
CUR_MAX *= 2;
count = 0;
if ((temp = realloc(buffer, CUR_MAX)) != NULL) {
buffer = temp;
free(temp);
}
}
ch = getc(fp);
buffer[length] = ch;
length++;
count++;
}
何らかの理由で、非常に大きな文字列を読み取るときに、
glibc が検出されました - realloc() の次のサイズが無効です。
私がここに欠けているものはありますか?
ありがとう!