跨语言的内存存储

Memory storage across languages

我是编程新手,最近发现了一些语言(c++、java、...)中对象和变量的存储方式。但是当我(在随机站点上)阅读其他语言(例如 [=17=)的存储如何工作时,显然堆栈的概念不存在并且对象和变量保存在堆中。这是真的吗?

如果是这样,那么像堆栈或(其他语言的.data,.bss)这样的段在物理上不存在吗?存储如何工作?我不太明白内存段。

编辑:我不是在询问每种语言的内存段,我只是想知道为什么内存段存在于一种语言中而另一种语言中却不存在。 (段在物理上不存在...段吗?就像 RAM 的不同部分)

Ruby 语言规范没有说明堆栈 and/or 堆。特定的 Ruby 实现是否碰巧使用堆、堆栈、两者或两者都不完全取决于实现者。

通常,Ruby 实现将每个进程使用一个堆,每个线程使用一个堆栈,每个纤程使用一个轻量级堆栈,但这是特定 Ruby 实现的私有内部实现细节并且不向程序员公开并且不以任何方式保证,即它可能随时更改,恕不另行通知。并非所有实现都如此。 MagLev 为 MagLev 集群中的所有进程(和所有计算机)提供了一个分布式持久堆。 Cardinal 没有堆栈,它使用在堆上分配的延续。我相信 SmallRuby 对所有线程使用一个 Spaghetti 堆栈。

请注意,这并不罕见。例如,C# 语言规范也没有说明有关堆或堆栈的任何内容。 Java 语言规范或 C++ 标准也没有。