Nit*_*arg 8 c++ memory heap stack automatic-properties
可能重复:
在C++中,为什么要new
尽量少用?
在C++中分配的自动变量在哪里?在堆栈或堆上?
另外,我在7.9中读到- 堆栈和堆,堆栈上分配的所有内存在编译时都是已知的.这是真的吗?这是否意味着堆栈上只发生静态内存分配?
另外,请提及链接,参考C++中有关内存分配的完整说明文字.
Pet*_*der 17
C++没有堆栈或堆的概念,就语言而言,它是一个实现细节.
话虽这么说,我所知道的每个实现都使用堆栈来管理局部变量的生命周期.但是,许多局部变量可能最终完全位于寄存器内,并且从不触及堆栈,并且可能会完全优化一些局部变量.仅仅因为你声明一个自动变量并不意味着它将被放在堆栈上.
例如
int main()
{
int x = rand();
int y = 2;
cout << x << y << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在此代码中,通过优化,变量y
几乎肯定会被完全删除,变量x
可能会被赋予自己的寄存器.这些变量中的任何一个都不可能存在于堆栈中.
归档时间: |
|
查看次数: |
7726 次 |
最近记录: |