Если это действительно то, как выглядит ваш цикл, то я думаю, что вы, вероятно, получаете более или менее ложную ошибку, потому что вашему процессу просто не хватает памяти, потому что ваш цикл так сильно его пропускает (вызов malloc
каждая итерация вашего цикла, но нигде не вызывается free
.
Также возможно (но гораздо менее вероятно), что вы столкнулись с небольшой проблемой из-за вашего (общего, но почти всегда неправильного) использования while (!feof(fp))
.
Все в printf
также дает неопределенное поведение, поскольку вы не соответствовали типу преобразования и типу (хотя во многих современных системах это не имеет значения, поскольку long и int имеют одинаковый размер).
Устранение этих проблем может или не может устранить проблему, которую вы наблюдали, но, по крайней мере, если вы все еще видите ее, вы сузите возможности того, что может быть причиной проблемы.
int main() {
FILE *fp = fopen("sorted_hits", "r+");
int buffer;
while(0 != fread(&buffer, sizeof(int), 1, fp))
; // read file but ignore contents.
if (ferror(fp)) {
printf("At file: %ld\n", ftell(fp));
perror("read error: ");
}
}