初学,问个变量初始化的简单问题。。。。
string global_str;
int global_int;
int main()
{
int local_int;
string local_str;
return 0;
}
出自C++Primer的习题2.17
全局str 和局部str 是调用了string的默认构造函数初始化为""这个可以理解
可为什么全局int 会初始化为0,而局部int却不会初始化?
[解决办法]
放的地方不一样
[解决办法]
全局变量属于静态内存分配 根据ISO规定得知 在采用段式内存管理的架构中(比如intel的80x86系统),bss段(Block Started by Symbol segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域,一般在初始化时bss 段部分将会清零。bss段属于静态内存分配,即程序一开始就将其清零了。而局部变量是根据你的编译器 有的编译器 会给未初始化的变量进行初始化,有的就不会!