Цитата(SZ0 @ Oct 5 2008, 22:58)

Стоит задача.
Обработка блоков данных, при этом блоки могут быть разных размеров, у каждого блока 1й байт определяет его тип, по которому мы знаем его размер. Любой блок может быть стёрт или изменён на другой тип...
Если по-проще, то сразу закладывайтесь на блоки фиксированного размера. Размер блока нужно выбирать кратным 2^N (чтобы проще было вычислять адреса) и таким, чтобы его легко можно было обрабатывать - помещать во временный буфер, копировать, перемещать. Не слишком большим и не слишком маленьким. Выбирайте из ряда: 16, 32, 64, 128, 256 байт/на блок. Одна запись будет занимать один или несколько блоков.
Нужно зафиксировать формат блока и предусмотреть в нем признаки первого блока записи, количество блоков, признак пустого блока (напр.: кол-во блоков записи=0), контрольную сумму- ессно! Если необходимо сохранить определенный порядок при удалении/вставке записей, введите в формат данных указатель на следующую запись.
Размещаете записи последовательно. Каждая должна начинаться с нового блока. Дописываете новые записи в конец (нужен указатель начала свободной области). При удалении записи объявляете блоки пустыми, но ничего не сдвигаете. Сборкой мусора занимаетесь только когда исчерпаете свободную область.
Не очень все будет эффективно (особенно поиск), но зато обойдетесь без таблицы размещения.
В конце-концов Вы просили как по-проще...