【发布时间】:2012-07-04 15:56:45
【问题描述】:
我正在开发一个用 C 编写的简单堆栈机器,主要用于学习目的。在使用malloc/free 进行内存操作后,我认为从现代虚拟机中读取一些特定于内存分配的代码是个好主意。
我下载了 Lua 源代码并开始阅读。过了一会儿,我意识到这涉及到很多宏的东西,我找不到完成实际内存分配的代码(即malloc 调用)。
find . -exec grep -i "malloc" '{}' \; -print
它只打印了一些名称中包含malloc 字样的 Lua 宏。 Lua VM(和编程语言)根本不使用malloc!
所以这引出了一个问题:现代虚拟机如何处理内存分配? Lua 如何从堆中分配内存?除了malloc,还有其他分配方式吗?其他方法的优缺点是什么?
我还想知道安全处理分配的内存的最佳实践、设计模式等。我在 Lua 的源代码中看到在分配内存之前有很多间接性。我在哪里可以了解这些东西?
【问题讨论】:
-
您对哪种虚拟机感兴趣?你知道,有些虚拟机可以虚拟化整个计算机。你也在问这些吗?
-
@AlexeyFrunze,不,我只对用于编程语言的虚拟机感兴趣。
-
好的,标题看起来很混乱。
-
这是真正应该迁移到programmers.se的罕见问题之一吗?
-
@finnw 问题被错误地迁移到programmers.se 是否很常见?
标签: c memory-management lua vm-implementation