Я нашел эту ссылку, которая описывает, как работает пользовательский распределитель памяти:
https://github.com/lovelaced/muhalloc/blob/master/mem.c
Почему Mem_Alloc()
делится на 4 и увеличивает size
до кратного 4?
Вот описание функции по этой ссылке:
/* Function for allocating 'size' bytes. */
/* Returns address of allocated block on success */
/* Returns NULL on failure */
/* Here is what this function should accomplish */
/* - Check for sanity of size - Return NULL when appropriate */
/* - Round up size to a multiple of 4 */
/* - Traverse the list of blocks and allocate the best free block which can accommodate the requested size */
/* -- Also, when allocating a block - split it into two blocks when possible */
/* Tips: Be careful with pointer arithmetic */
void* Mem_Alloc(int size)
...