1个回答
展开全部
类对象所占用的存储空间可能位于静态存储区、栈、堆,对象所占用的内存具体位于那个区域由定义对象的位置和分配内存的方式决定。 一般对象占用的空间是所有数据成员占用的空间之和,但是不包括成员函数占用的空间, 无论你定义多少对象,成员函数都只占用一块内存。
更多追问追答
追问
class A{
public:
int a[2000][2000];
private:
int b[2000][2000];
void dx(){
int c[2000][2000];}};
void f(){
A x;
.........
.........}
如果在函数f中定义了类A,那么x占用的内存空间是不是数组a、b在栈区,c不在栈区?
追答
定义在函数内部的非static变量或者对象,只有CPU执行到这个函数还未退出这个函数的时候,变量和对象才位于栈中。
你上面问得x和函数dx中c变量都是在栈上分配内存,但是要到CPU执行到定义他们的函数的时候才实际占用内存。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询