C++ 允许程序员使用堆栈分配的内存或堆上的动态内存。我对堆栈的操作方式非常清楚(我在 C++ 中创建了堆栈作为练习),但仍然对“堆栈”的定义方式和位置感到好奇。
“堆栈”是语言的特性、操作系统的特性还是硬件的特性?我有一个模糊的想法,从操作系统的角度来看,每个堆栈都是与许多活动线程进程中的每一个相关的东西。这表明它是在软件级别实现的,而不是 CPU 或主板的硬连线功能。
我想,在 C++ 的情况下,编译器可能已经将堆栈的实现插入到每个二进制文件中。或者操作系统将它自己的堆栈实现应用到每个正在运行的进程中?这是如何定义的?
我在这里发现了一个类似的问题,但我没有看到它得到回答,我希望更直接地重新陈述这个问题。