Я работаю над простой стековой машиной, написанной на C, в основном для обучения. После использования malloc/free
для операций с памятью я подумал, что было бы неплохо прочитать код, специфичный для выделения памяти, из современных виртуальных машин.
Я скачал исходный код Lua и начал его читать. Через некоторое время я понял, что задействовано много макросов, и я не смог найти код, в котором выполняется реальное выделение памяти (, т.е. malloc
звоните ).
find. -exec grep -i "malloc" '{}' \; -print
Он напечатал только некоторые макросы Lua, в именах которых есть слово malloc
. Lua VM (и язык программирования )вообще не используют malloc
!
Это приводит меня к вопросу :, как современные виртуальные машины справляются с распределением памяти? Как Lua выделяет память из кучи? Существуют ли какие-либо способы выделения, кроме malloc
? Каковы плюсы/минусы других методов?
Меня также интересуют передовые -методы, шаблоны проектирования -и т. д. для безопасной работы с выделенной памятью. Я вижу в исходнике Lua, что перед выделением памяти много косвенных действий. Где я могу узнать об этом материале?