全部变量的析构函数问题【转】
#include<iostream> struct t { t(){std::cout<<"initialize\n";} ~t(){std::cout<<"Clear up\n";} }variable; int main() { std::cout<<"Hello,word!\n"; }
这段代码主要解释了全局变量的构造与析构的过程,如果编译器不输出
initialize
Hello,word!
Clear up
Press any key to continue
则把cout改为printf即可
可以稍微思考一下如果把全局变量放在main函数下面怎么样呢,其实效果是一样的,也就是说编译器在编译后会进行优化,以至于你无论把全局变量放在那里都是在main函数前被存放好了,这就是有编译器来完成的
global_a全局变量的初始值,程序开始运行时,全局变量的初始值在程序中,所以需要把全局变量的数据搬移到变量实际的存储地址。所以必须有一段程序在没用到全局变量之前执行该功能,该程序一般是在跳转到Main函数之前完成的。而集成开发工具,在编译连接指令时帮助用户完成了数据段的搬移,用户感觉不到。【转】