BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #8947同步于 2008/6/28
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

关于几个内存分配的问题

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