返回信息流大概是这个样子的
A是一个类
cpp文件如下
A a;
int main()
{
A b;
}
用调试器查看发现a里面的成员地址都是0x000...
而b的成员都是0xccc...
是不是要手动给a分配内存才可以?
这是一条镜像帖。来源:北邮人论坛 / cpp / #25736同步于 2009/7/2
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
C++定义在main函数外的变量的内存是不是没分配?
AmelieLee
2009/7/2镜像同步19 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
错觉错觉
【 在 AmelieLee (折腾大牛的坏孩子|我是学术的,不是技术的) 的大作中提到: 】
: 大概是这个样子的
: A是一个类
: cpp文件如下
: ...................
这个类从lib里面调的。。。。。
【 在 zhaotong (hotter) 的大作中提到: 】
: 建议构造函数里面打印出调试信息,这样就知道
: A a;
: 是不是被构造。
: ...................
郁闷了。。。。
那有没有可能是在main外面那个没有初始化而main里面那个初始化了呢?
它们的成员函数的地址为什么不一样呢?
【 在 FadeToBlack (Patz) 的大作中提到: 】
: 应该是申请内存空间了
未初始化的全局变量会存放在可执行文件的bss节,程序执行时会用0来初始化;
初始化的全局变量会存放在可执行文件的data节,程序执行时会用你要求的值初始化它。
栈中的局部变量只是分配内存,程序并不会初始化它,所以是0xcccc之类。
所以你正好说反了。
【 在 AmelieLee 的大作中提到: 】
: 郁闷了。。。。
: 那有没有可能是在main外面那个没有初始化而main里面那个初始化了呢?
: 它们的成员函数的地址为什么不一样呢?
原来是用0初始化了,明白明白,谢谢~
【 在 cymvp (cymvp) 的大作中提到: 】
: 未初始化的全局变量会存放在可执行文件的bss节,程序执行时会用0来初始化;
: 初始化的全局变量会存放在可执行文件的data节,程序执行时会用你要求的值初始化它。
: 栈中的局部变量只是分配内存,程序并不会初始化它,所以是0xcccc之类。
: ...................
a会调用A默认的构造函数完成初始化吧,
a的地址怎么会是0x0000....呢?
【 在 cymvp 的大作中提到: 】
: 未初始化的全局变量会存放在可执行文件的bss节,程序执行时会用0来初始化;
: 初始化的全局变量会存放在可执行文件的data节,程序执行时会用你要求的值初始化它。
: 栈中的局部变量只是分配内存,程序并不会初始化它,所以是0xcccc之类。
: ...................