C++ class中定义的变量和函数占用的内存是哪里的?

是栈区吗?... 是栈区吗? 展开
 我来答
帐号已注销
2015-10-08 · TA获得超过3954个赞
知道大有可为答主
回答量:1636
采纳率:77%
帮助的人:1213万
展开全部
类对象所占用的存储空间可能位于静态存储区、栈、堆,对象所占用的内存具体位于那个区域由定义对象的位置和分配内存的方式决定。 一般对象占用的空间是所有数据成员占用的空间之和,但是不包括成员函数占用的空间, 无论你定义多少对象,成员函数都只占用一块内存。
更多追问追答
追问
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执行到定义他们的函数的时候才实际占用内存。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式