【发布时间】:2013-06-02 15:58:02
【问题描述】:
除了 C 和 C++ 之外,是否还有其他语言可以在没有动态内存分配(即堆)功能的情况下显式使用。在某些关键任务嵌入式系统中,禁止使用堆以消除可能连续运行多年的软件的内存泄漏问题。一些特殊用途的编译器还明确禁用 new 和 malloc 以强制执行此做法。
我查看了一些函数式语言,即 Timber 和 Erlang 的嵌入式重点,但它们似乎都使用带有垃圾收集器的堆。 OCaml 和 Haskell 尽管静态类型也使用垃圾收集器,显然 Python、Ruby 和其他动态类型语言严重依赖垃圾收集和堆空间。
- 任何高级语言都支持这种不动态分配内存的要求吗?
- 考虑到它们的语言语义,功能性静态类型语言的编译器是否可以这样做?
【问题讨论】:
-
我会考虑 C++ 模板 very 高级别的(例如,可以在模板中编译 Logic)。但它比其他语言要难学得多。
-
您认为Forth 是一种高级语言吗?
-
我想找到比 Forth 更“高级”的东西。我知道 C++ 模板 support all kinds of crazy capabilities,但我一直觉得模板元编程更像是一种语言的发现技巧,而不是有意的用例。
-
动态分配有点误称。即,仅仅禁止
malloc和new是不够的。它们只是其他功能。使用 Java 或更具体的 垃圾收集,您可以有非故意引用。像alloca()这样的东西允许从 stack 进行运行时分配,就像 C/C++ Variable length arrays 一样。甚至这也可能被禁止,因为您对 动态内存 的定义可能与其他人不同。我相信您想要在编译时预先确定最大内存使用量的东西。 -
FragmentPoolC 和 at U-Utah。另一个镜头与tlsf.baisoku.org 的时间有关
标签: memory-management embedded heap-memory