【发布时间】:2015-06-02 00:33:30
【问题描述】:
C++ 允许程序员使用堆栈分配的内存或堆上的动态内存。我对堆栈的操作方式非常清楚(我在 C++ 中创建了堆栈作为练习),但仍然对“堆栈”的定义方式和位置感到好奇。
“堆栈”是语言的特性、操作系统的特性还是硬件的特性?我有一个模糊的想法,从操作系统的角度来看,每个堆栈都是与许多活动线程进程中的每一个相关的东西。这表明它是在软件级别实现的,而不是 CPU 或主板的硬连线功能。
我想,在 C++ 的情况下,编译器可能已将堆栈的实现插入到每个二进制文件中。或者操作系统将它自己的堆栈实现应用到每个正在运行的进程中?这是如何定义的?
我发现了一个类似的问题here,但我没有看到它得到回答,我希望更直接地重新陈述这个问题。
【问题讨论】:
-
“我在 C++ 中创建了堆栈作为练习”——不同类型的堆栈
:)不要让这个名字欺骗了你。 en.wikipedia.org/wiki/Stack-oriented_programming_language。而且,您链接的问题已得到解答。 -
stackoverflow.com/questions/79923/… 完全相同,视野更开阔
-
是的,我知道。我只是说我已经做了“堆栈”来直截了当,我不需要解释“推”“流行”是什么意思等等......
标签: c++ memory-management operating-system stack language-implementation