C ++ 03 Standard在3.7中指定存储持续时间,其中包括3.7.2中的自动存储持续时间,我将其读作“自动存储持续时间”,而不是“自动存储”存储”。另外3.7.3 / 1读取
C ++实现提供对动态存储的访问和管理......
其中dynamic storage
不是斜体,因此不作为定义引入,但至少提到它。但是,我找不到以任何类似方式提及自动存储的地方,整个标准中仅提及自动存储持续时间。
在C ++ Standard中存储locals和temporaries的存储术语(不是持续时间,而是存储本身)是什么?
答案 0 :(得分:5)
没有一个术语。就C ++标准而言,无关紧要。重要的是此存储的持续时间,而不是它所在的位置。
标准也没有提到“堆”或“堆栈”,尽管编译器几乎普遍使用它们来实现标准中描述的存储语义。
不存在这样的单个术语的一个可能原因可能是具有自动存储持续时间的对象不一定位于单个位置。它们可能在堆栈中,或者它们可能在堆上,作为另一个对象的类成员,或者可能在寄存器中。
答案 1 :(得分:4)
如果标准没有说明它们的去向,那么实现可以自由地将它们放在任何需要的地方。通常它们会进入堆栈,但堆栈不是实现的要求。
标准是说明行为的行为,而不是它们如何在幕后工作。
automatic storage
的C ++ 03中提及否,但与automatic storage duration
无关。对于(我已经很晚的草稿)C ++ 11标准也是如此。在所有情况下,重要的是对象的生命周期,而不是它存储的位置。