если самое простое, то это пулы памяти - все куски одного размера.
Так реализовано в Tn-Kernel. По сути - N-флажков на N-кусков.
не плохо бы добавлять также в дескриптор каждого куска:
1. запрошенный размер
2. в конце писать magic-word для теста что не переполнили ( по крайней мере так реализовано в MSVC )
3. что за задача заняла указанный блок
4. magic-word в начале дескриптора
пункты 2 и 4 помогают отлавливать переползания за пределы, за счет установкой бряка на изменение переменной
Add: в аттаче исходники на Tn-Kernel и FreeRtos
как работает в линуксе