返回信息流1 int x;分配内存了吗?
2 class a
{...
}分配内存了吗?
3 y是类a的实例化对象,y的内存分配如何?y的存储空间中包含了成员变量,成员函数的代码存储于哪?是a中,还是a和y中都有?
这是一条镜像帖。来源:北邮人论坛 / cpp / #8947同步于 2008/6/28
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
关于几个内存分配的问题
Aimar
2008/6/28镜像同步5 回复
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
1.分配内存,默认初始化为0;如果加上EXTERN则只声明,未初始化,不分配内存
2.不分配,没有初始化,只是类定义;
3.y分配内存空间,动态分配,在堆中,由Y指向相应内存
个人意见。
1。如果是全局的或者静态的,在数据段分配空间。如果是局部的,在堆栈分配空间。
2。没有分配内存,这只是定义了一种类型,让编译器识别,分配内存是在实例化后才有的。
3,y分配空间,如果是用neW实例化的,那么在堆中分配,否则在栈中。y的存储空间中只包含成员变量。成员函数的代码存储在代码段当中。a和y共同拥有。
【 在 Aimar 的大作中提到: 】
: 我明白了。是不是正因为y的成员函数不是存储于y中,所以每个成员函数(非静态)都隐含有一个指向实例化对象的this指针?
this指针不适成员函数拥有的,是在调用成员函数的时候隐含的传递给成员函数的
这样理解:this 指针是成员函数的隐含参数。
例如:成员函数bool isEqual(b)
当类的实例对象a调用成员函数时,this初始化为a的地址。
a.isEqual(b)。编译器将其解析为::isEqual(&a,b),
这样成员函数中使用的数据成员就属于对象a。
个人意见。