Зарегистрироваться
Восстановить пароль
FAQ по входу

Тегированный аллокатор

  • Файл формата rar
  • размером 16,14 КБ
  • содержит документ формата doc
  • Добавлен пользователем
  • Описание отредактировано
Тегированный аллокатор
void *mem_alloc(size_t size);
функция должна выделить блок памяти заданного размера в size байт. Если блок памяти был выделен успешно, то вернуть адрес начала этого блока, в противном случае вернуть NULL.
void *mem_realloc(void *addr, size_t size);
функция должна изменить размер блока памяти с адресом addr до size байт. При этом содержимое (всё или часть) старого блока памяти может быть перенесено в другой блок памяти. Если удалось изменить размер блока памяти, то функция должна вернуть адрес нового блока памяти, иначе вернуть NULL и не разрушить старый блок памяти. Если addr равен NULL, то вызов функции аналогичен вызову mem_alloc(size).
void mem_free(void *addr);
функция должна освободить прежде выделенный блок памяти.
Разработать аллокатор общего назначения, используя за основу описанный выше базовый вариант алгоритма, принимая во внимания следующие условия:
Области памяти можно выделять любым доступным способом.
Функции mem_alloc(), mem_realloc() и mem_free() должны соответствовать приведенным выше прототипам.
Адреса памяти, возвращаемые функциями mem_alloc() и mem_realloc(), должны быть выровнены на границу в 4 байта.
Попытаться уменьшить время поиска свободного блока памяти и время освобождения занятого блока.
Попытаться уменьшить фрагментацию памяти.
Написать функцию mem_dump(), которая должна выводить на консоль состояние областей памяти.
  • Чтобы скачать этот файл зарегистрируйтесь и/или войдите на сайт используя форму сверху.
  • Регистрация