История изменений
Исправление vbr, (текущая версия) :
Я ничего не сохранял, очень давно это было. Насколько я помню - я просто делал связный список из свободных блоков, размер текущего свободного блока и указатель на следующий блок хранился в первых байтах свободного блока. Для выделения памяти я шёл по списку и искал первый свободный блок подходящего размера. Размер выделенного блока записывался в первых байтах выделенного блока, пользователю возвращался указатель за этими байтами. А найденный свободный блок либо уменьшался, либо удалялся. Для освобождения памяти я либо превращал выделенный блок в освобождённый, если он окружён выделенными блоками, либо сливал его со следующим/предыдущим освобождённым блоком. По сути ничего сложного, просто аккуратно всё надо было запрограммировать и не запутаться в указателях.
GUI - была горизонтальная полоска, каждая вертикальная черта которой соответствовала каким-то байтам, и окрашивалась в красный/зеленый цвет, в зависимости от того, были ли эти байты занятыми или свободными. И несколько кнопок и текстовых полей, для того, чтобы вызывать malloc/free соответственно и наблюдать, как это отражается на визуальной индикации. GUI делал на WinAPI с C.
Исправление vbr, :
Я ничего не сохранял, очень давно это было. Насколько я помню - я просто делал связный список из свободных блоков, размер текущего свободного блока и указатель на следующий блок хранился в первых байтах свободного блока. Для выделения памяти я шёл по списку и искал первый свободный блок подходящего размера. Размер выделенного блока записывался в первых байтах выделенного блока, пользователю возвращался указатель за этими байтами. А найденный свободный блок либо уменьшался, либо убирался. Для освобождения памяти я либо превращал выделенный блок в освобождённый, если он окружён выделенными блоками, либо сливал его со следующим/предыдущим освобождённым блоком. По сути ничего сложного, просто аккуратно всё надо было запрограммировать и не запутаться в указателях.
GUI - была горизонтальная полоска, каждая вертикальная черта которой соответствовала каким-то байтам, и окрашивалась в красный/зеленый цвет, в зависимости от того, были ли эти байты занятыми или свободными. И несколько кнопок и текстовых полей, для того, чтобы вызывать malloc/free соответственно и наблюдать, как это отражается на визуальной индикации. GUI делал на WinAPI с C.
Исправление vbr, :
Я ничего не сохранял, очень давно это было. Насколько я помню - я просто делал связный список из свободных блоков, размер текущего свободного блока и указатель на следующий блок хранился в первых байтах свободного блока. Для выделения памяти я шёл по списку и искал первый свободный блок подходящего размера. Размер выделенного блока записывался в первых байтах выделенного блока, пользователю возвращался указатель за этими байтами. Для освобождения памяти я либо превращал выделенный блок в освобождённый, если он окружён выделенными блоками, либо сливал его со следующим/предыдущим освобождённым блоком. По сути ничего сложного, просто аккуратно всё надо было запрограммировать и не запутаться в указателях.
GUI - была горизонтальная полоска, каждая вертикальная черта которой соответствовала каким-то байтам, и окрашивалась в красный/зеленый цвет, в зависимости от того, были ли эти байты занятыми или свободными. И несколько кнопок и текстовых полей, для того, чтобы вызывать malloc/free соответственно и наблюдать, как это отражается на визуальной индикации. GUI делал на WinAPI с C.
Исправление vbr, :
Я ничего не сохранял, очень давно это было. Насколько я помню - я просто делал связный список из свободных блоков, размер текущего свободного блока и указатель на следующий блок хранился в первых байтах свободного блока. Для выделения памяти я шёл по списку и искал первый свободный блок подходящего размера. Размер выделенного блока записывался в первых байтах выделенного блока, пользователю возвращался указатель за этими байтами. Для освобождения памяти я либо превращал выделенный блок в освобождённый, если он окружён выделенными блоками, либо сливал его со следующим/предыдущим освобождённым блоком.
GUI - была горизонтальная полоска, каждая вертикальная черта которой соответствовала каким-то байтам, и окрашивалась в красный/зеленый цвет, в зависимости от того, были ли эти байты занятыми или свободными. И несколько кнопок и текстовых полей, для того, чтобы вызывать malloc/free соответственно и наблюдать, как это отражается на визуальной индикации. GUI делал на WinAPI с C.
Исходная версия vbr, :
Я ничего не сохранял, очень давно это было. Насколько я помню - я просто делал связный список из свободных блоков, размер текущего свободного блока и указатель на следующий блок хранился в первых байтах свободного блока. Для выделения памяти я шёл по списку и искал первый свободный блок подходящего размера. Размер выделенного блока записывался в первых байтах выделенного блока, пользователю возвращался указатель за этими байтами. Для освобождения памяти я либо превращал выделенный блок в освобождённый, если он окружён выделенными блоками, либо сливал его со следующим/предыдущим освобождённым блоком.
GUI - была горизонтальная полоска, каждая вертикальная черта которой соответствовала каким-то байтам, и окрашивалась в красный/зеленый цвет, в зависимости от того, были ли эти байты занятыми или свободными. И несколько кнопок и текстовых полей, для того, чтобы вызывать malloc/free соответственно и наблюдать, как это отражается на визуальной индикации.