Рассмотрим этот бит кода урезанной:Bizarre на тетсру выдаёт ошибку сегментации в GetLine
#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
, я получаю segfault на линии getline
. Я показал вам всю программу здесь - никогда не используется, и я понятия не имею, как это заявление может иметь значение.
Я подозреваю, что это проблема распределения памяти, потому что раскомментирование части = malloc
удаляет segfault. Но что может вызвать это взаимодействие между и getline
?
* Неопределенное поведение * - это просто ... undefined; все может случиться. Прочтите документы для 'getline' и используйте их правильно. Нет смысла предполагать, что пошло не так, когда вы называете это неверными аргументами. – Praetorian
Все ответы были полезны для меня. В частности, это моя первая встреча с неопределенным поведением - я раньше этого не слышал. – zkurtz
+1 для публикации короткого, компилируемого примера. –