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