C++标准对存储,局部变量的分配有何保证?

Ant*_*cus 4 c++ memory standards

让我们考虑一下这个简单的C++代码:

struct vector3d { double x, y, z; };

void foo()
{
    vector3d v;
    ...
}
Run Code Online (Sandbox Code Playgroud)

C++对位置的评价是v什么?我的猜测是:什么都没有,这是有道理的,因为C++不应该为这些底层的内存概念而烦恼.

但是,如果C++标准没有谈论堆栈,堆和动态内存分配的具体概念,那么在这种情况下它如何保证编译器不会选择使用底层调用来转换此行malloc而不是经典sub rsp, X

如果它不能保证任何东西,C会保证某些东西(出于好奇)吗?是否所有C++开发人员普遍认为这将在堆栈中?

谢谢!

Rei*_*ica 10

你是正确的,C++标准没有直接说明这一点.实际上,诸如"堆叠"或"堆积"之类的概念从标准的POV中没有意义.

这实际上是一个质量实现问题,除了假设的Hell ++(其座右铭是"坚持RAW并尽可能地违反RAI"),没有编译器有理由在堆上存储自动持续时间局部变量.

  • @AntiClimacus RAW - **R**ules**A**s**W**ritten.RAI - **R**ules**A**s**I**n**. (2认同)