【发布时间】:2013-01-21 08:59:57
【问题描述】:
当我们在 c++ 中在函数中实例化一个变量,如 int x(即 x 是一个局部变量)时,它被分配在进程的堆栈顶部。但是如果我们做int *x= new int,空间是在堆中提供的。
所以,我的问题是:
不同类的对象(c++ 提供的类或用户定义的类)呢?他们的对象在哪里实例化?例如:让 Employee 是一个类,我们声明
Employee emp;。emp给定空间在哪里-> 在堆栈或堆中?如果声明
int a[4]在函数内,那么a的所有四个单元格是否都获得了堆栈空间?
【问题讨论】:
-
我想提一下
new,如果没有超载,它会在所谓的空闲存储中分配空间,这不一定是堆,尽管实际上它是。如果它被重载,new可以做任何事情。
标签: c++ variables heap-memory stack-memory