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