dsa*_*389 3 c++ memory-management c++11
class Foo{
public:
void foo(){
int x, y; // go to the HEAP or the stack?
}
};
int main(){
Foo *f = new Foo();
f -> foo();
delete f;
}
Run Code Online (Sandbox Code Playgroud)
如果我在 HEAP 上创建一个类实例并激活一个“类方法”,函数局部变量和“元数据”存储在哪里?在 HEAP 上,因为该类是在 HEAP 上还是堆栈上?
如果类在堆上,函数会进入堆还是堆栈?
C++ 语言没有“堆”或“堆栈”之类的东西。
自动变量具有自动存储功能。动态对象具有动态存储。静态变量具有静态存储。线程局部变量具有线程局部存储。
函数根本没有存储。只有对象(有时是引用)可以。
关于C++ 语言在冯诺依曼架构上的典型实现: 程序的指令与堆栈和堆分开存储。所以,这个问题的答案是:都不是。
函数局部变量......存储在哪里?
自动变量 - 即函数内块的局部变量并且不是静态的 - 例如f,x并y存储在自动存储中。
在典型的实现中,自动存储是通过将对象存储在执行堆栈上,或在 CPU 寄存器中,或无处存储(如果它们的存储不可观察)来实现的。
| 归档时间: |
|
| 查看次数: |
173 次 |
| 最近记录: |