Я предоставлю вам базовую концепцию, которую вы можете использовать для написания собственного кода для функций malloc () и free (), используя C.
Предположим, что у нас есть смежныеблок памяти определенного размера.Это будет наше абстрактное чувство памяти, которое будет нести все запрошенные выделения памяти плюс структуры данных, которые используются для хранения данных об этих выделенных блоках.
Мы используем простой связанный список дляпереносить данные, относящиеся как к выделенным, так и к свободным блокам памяти.
Его структура выглядит следующим образом.
struct block{
size_t size; /*Specifies the size of the block to which it refers*/
int free; /*This is the flag used to identify whether a block is free
or not*/
struct block *next; /*This points to the next metadata block*/
};
Для этого вам понадобятся 2 исходных файла.Одним из них является mymalloc.h, который является заголовочным файлом, который содержит части инициализации и прототипы функций остальных функций, которые мы собираемся реализовать.Другой - это исходный файл mymalloc.c, который содержит все необходимые реализации функций.
Должна быть функция для инициализации первого свободного блока памяти.И еще одна функция для разделения блока памяти, который имеет более чем достаточно места, чтобы дать запрошенный размер.И еще один метод для сканирования связанного списка и объединения любых последовательных свободных блоков, чтобы предотвратить внешнюю фрагментацию.
Примечание. Мы используем алгоритм First-fit-find для нахождениясвободный блок для выделения памяти.
Я думаю, что это поможет любому, кто ищет простой способ написания своих собственных malloc и свободных функций с использованием C. Пожалуйста, перейдите по следующей ссылке для подробного объяснения.
http://tharikasblogs.blogspot.com/p/how-to-write-your-own-malloc-and-free.html