Nina_HY

只有尝到了坏果子,才知道好果子有多好吃,才会珍惜

导航

全部变量的析构函数问题【转】


#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函数之前完成的。而集成开发工具,在编译连接指令时帮助用户完成了数据段的搬移,用户感觉不到。【转】

posted on 2011-10-30 19:56  Nina_HY  阅读(190)  评论(0编辑  收藏  举报