Указатель line_lenght
никуда не указывает. Содержит нулевой указатель. Поэтому, когда getline
пытается разыменовать этот нулевой указатель, вы вызываете неопределенное поведение , что в этом случае приводит к сбою.
Вместо определения line_lenght
как size_t *
, определите его как size_t
и передайте его адрес.
size_t line_length = 0;
getline(&new_line, &line_length, FilePointer);
Что касается того, куда вызывать free
, поскольку ReadOneLine
возвратил ошибочный буфер, то функция, которая вызвала ReadOneLine
, должна вызвать free
. В этом случае, чем означает, что вам нужно вызвать free(buffer)
в функции main
, когда вы закончите с ней.