Automatic variables in C++
Possible Duplicate:
In C++, why shouldnew be used as little as possible?
在C++中自动分配的变量在哪里?在那堆还是那堆?
另外,我在7.9中读到了堆栈和堆栈,在编译时堆栈上分配的所有内存都是已知的。是真的吗?这是否意味着只有静态内存分配发生在堆栈上?
另外,请注意链接,引用关于C++中内存分配的完整说明性文本。
c++does not have the concept of a stack or heap,it is an explementation detail as far as the language is concerned.
据我所说,每一个实现我都知道使用堆栈来管理局部变量的生活。然而,许多局部变量可能会在寄存器内结束整个生命,而不会触及堆栈,一些局部变量可能会被优化为完整的。因为你声明一个自动变量并不意味着它会被放到堆栈上
E.G.
1 2 3 4 5 6 7 | int main() { int x = rand(); int y = 2; cout << x << y << endl; return 0; } |
在本代码中,随着优化,变量
是的,汽车变速器被分配,最常见的是,在堆栈上(The C++Standard doesn't specificy"stack"but it is safe enough to admit that)。
你可以用堆栈来分配动态记忆中的
自动(本地)变量不被分配到Heap。他们将住在堆栈或登记处。
是的,所有的堆栈分配都是在编译时间知道的。
你参考的链接实际上是一个很好的资源来描述如何C+handles memory。
在定位寄存器或堆栈中的一些局部变量时,有些编译者可能选择重新使用特定寄存器或存储器,如果可以在编译时间内确定一个物体的可用寿命限制在代码区域。
For example,
ZZU1
编译员会发现,A和B的尺寸相同,但A在B的生活中并不常见。编译器将在同一存储器(堆栈或寄存器)的一个和二个之间绘制地图,以保存空间位。