Witam. Pisze programy do symulacji i ostatnio natrafiłem na problem któego nie mogę rozgryźć. Programy mi się w trakcie długich symulacji wysypywały, czasami bez komunikatów czasami z komunikatam o problemach z załądowaniem biblioteki curses. Zauważyłem, że zżera mi pamięć RAM. Testowałem kod, analizowałem i doszedłem do momentu w którym stwierdziłem, że to się dzieje przez wywołąnie funkcji fprintf. Wydawało mi się to dziwne, ale nic innego nie znalazłem. Napisałęm więc krótki programik testowy:
#include <stdio.h>
int main(int argc, char **argv)
{
FILE *fileOutput;
char _file[255] = "";
for(long i=0; i<100000000; i++){
sprintf(_file, "./pliki/t%d.txt", i);
fileOutput = fopen(_file,"w");
if (!fileOutput) {
return 0;
}
fprintf(fileOutput, "%ld\n", i);
if(!fclose(fileOutput)) ; else printf("error");
}
return -1;
}
Okazuje się, że jak się ten program odpali (nie ważne czy pod Winem czy pod Linuxem) to pamięć przydzielona do procesu jest stała, ale globalny wskaźnik pamięci PC-ta pokazuje, że systematycznie ona ginie, aż do wyczerpania 100%.
Czy ktoś może mi powiedzieć o co chodzi. NIe wiem, czy ja robię jakiś błąd w zapisie, którego nie mogę wyłapać, czy to jest jakiś inny powód.
Będę wdzięczny za pomoc :-).