C++是否有无堆栈或无堆实现?
C++是否有无堆栈或无堆实现?
C++标准没有关于堆栈或堆的任何规定,它们是实现特定的。这是正确的。
尽管它们不是C++标准的一部分,但我们最终仍然会使用它们,以至于它们就像是语言本身的一部分,并且必须考虑它们是否会影响内存或性能。
因此,我的问题是是否存在不使用堆栈和堆的C++实现?
admin 更改状态以发布 2023年5月24日
C++标准并未提到任何关于栈或堆的内容。实际上,它确实提到了——只是用了不同的词汇,而且没有具体说明栈和堆的实现方式。在C++03中有三种变量类型: 1.具有静态存储期限(3.7.1)。这些变量在程序运行期间一直保持\"在范围内\"。 2.具有自动存储期限(3.7.2)。这些变量只在它们被声明的上下文中有效。一旦超出范围,变量将被销毁和释放。 3.具有动态存储期限(3.7.3)。这些变量使用new表达式创建,并使用delete销毁。对象本身没有范围,因为它们的生命周期不受它们new的上下文的限制。当然,指向这些对象的指针是有范围的。指针具有自动或(很少但通常是错误的)静态存储期限。 \"栈\"和\"堆\"实际上只是两种对象的位置。它们是平台相关的实现细节,用来实现语言要求。因此,从技术上讲,您是正确的。标准没有关于堆和栈的任何说明。但是它确实关于存储期限有很多描述,这需要在一个真实的平台上进行某种实现。在大多数现代PC类型硬件上,这被实现为堆和栈。不使用堆或栈就可以在平台上实现不同类型的存储期限吗?这是有可能的——我想这可能是。但无论该实现最终是什么样的,它可能具有至少一种类似于其中一种的特征。除了所有这些,还需要考虑的是,标准要求同时具有自动和动态存储期限。任何不符合这两个要求的语言实现都不会是C++。它可能很接近,但它实际上不是C++。