我刚开始编程,最近发现了一些语言中的对象和变量的存储是如何工作的(c++,java,.)。但是当我(在随机站点中)读到存储如何在其他语言(如ruby )中工作时,显然堆栈的概念并不存在,并且对象和变量保存在堆中。这是真的吗?
如果是这样的话,那么像堆栈或(其他语言的.data,.bss )这样的段是否物理上不存在?仓库是怎么工作的?我不太懂记忆片段。
编辑:我不是在问每种语言的记忆片段,我只是想知道为什么一个片段在一种语言中存在,而在另一种语言中却不存在。(片段不像.那样存在.片段?类似于RAM的不同部分)
发布于 2015-08-08 01:23:37
Ruby语言规范没有提到堆栈和/或堆。无论某个特定的Ruby实现是否碰巧使用堆、堆栈,还是两者都使用,或者两者都不完全取决于实现者。
通常,Ruby实现将每个进程使用一个堆,每个线程使用一个堆栈,每个光纤使用一个轻量级堆栈,但这是特定Ruby实现的私有内部实现细节,不向程序员公开,也不以任何方式保证,即它可以在任何时候不经通知而更改。并不是所有的实现都是如此。MagLev对于MagLev集群中的所有进程(和所有计算机)都有一个单一的分布式持久堆。红衣主教没有堆栈,它使用堆上分配的延续。我相信SmallRuby对所有线程都使用单一的意大利面条堆栈。
请注意,这并不少见。例如,C#语言规范也没有提到堆或堆栈。Java规范或C++标准也是如此。
https://stackoverflow.com/questions/31887029
复制相似问题