我正在研究用C编写的简单堆栈机器,主要用于学习目的.在malloc/free用于我的内存操作后,我认为从现代虚拟机中读取一些特定于内存分配的代码是个好主意.
我下载了Lua源代码并开始阅读它.过了一会儿,我意识到涉及很多宏的东西,我找不到真正的内存分配完成的代码(即malloc调用).
find . -exec grep -i "malloc" '{}' \; -print
Run Code Online (Sandbox Code Playgroud)
它只打印了一些malloc名字中包含单词的Lua宏.Lua VM(和编程语言)根本不使用malloc!
所以这引出了一个问题:现代虚拟机如何处理内存分配?Lua如何从堆中分配内存?除了以外有什么方法可以分配malloc吗?其他方法的优缺点是什么?
我也想知道安全地处理分配的内存的最佳实践,设计模式等.我在Lua的源代码中看到,在分配内存之前有很多间接.我在哪里可以了解这些东西?