gpt4 book ai didi

c++ - C++ 标准对局部变量的存储、分配有什么保证?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:03:38 25 4
gpt4 key购买 nike

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

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

void foo()
{
vector3d v;
...
}

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

但是,如果 C++ 标准不讨论堆栈、堆以及动态内存分配的具体概念,它如何保证在这种情况下编译器不会选择通过对 的底层调用来翻译这一行malloc 而不是经典的 sub rsp, X?

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

谢谢!

最佳答案

你是对的,C++ 标准没有直接说明这一点。实际上,从标准的 POV 来看,“堆栈”或“堆”等概念没有意义。

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

关于c++ - C++ 标准对局部变量的存储、分配有什么保证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50447499/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com