Информатика и технология программирования


Двоичный файл - неограниченный массив байтов - часть 4


Вообще, способы распределения памяти в файле могут быть довольно сложными. Для соответствующих разъяснений следует обратиться к алгоритмам распределения памяти. Однако есть один очень простой и естественный способ - для размещения переменной в файле достаточно добавить ее в конец файла. Для этого нужно установиться на конец файла и получить значение позиционера, после чего записать в файл саму переменную.


int a;
long pos;
fseek(fd,0L,SEEK_END);
pos=ftell(fd);
fwrite((void*)&#38a, sizeof(int),1,fd);

Если в процессе работы с переменной в файле ее размерность не будет меняться, то можно просто переписывать обновленное значение переменной на то же самое место .


a++;
fseek(fd,pos,SEEK_SET);
fwrite((void*)&#38a, sizeof(int),1,fd);

Если размерность переменной увеличится, то можно еще раз добавить ее в конец файла. Проблема утилизации получающихся свободных мест ("сбор мусора") достаточно сложна, чтобы рассматривать ее в простых примерах. В качестве наиболее удобного решения можно предложить периодическое переписывание всей структуры данных в новый файл (сжатие).




- Начало -  - Назад -  - Вперед -