我大概看了看CRT0.C的代码,有很多看不明白。
18 个解决方案
#1
。。。。。。。。。。。。。深层次的问题?up
#2
http://blog.chinaunix.net/article.php?articleId=8814&blogId=768
#3
学习
#4
请看 喉结 的深入抢出 mfc 的 c++ 基础知识
http://community.csdn.net/Expert/topic/4064/4064676.xml?temp=.4853022
大家看看这个问题,有价值一下啊
#5
C++中的global object都配置在程序的data segment中,如果没有明确的初始化,将以0为内存中的初值。这个过程是在编译期实现的。
如果global object配有constructor的话,那么这个constructor要到程序的startup阶段才会执行。这个过程叫静态初始化。
C++对于在何时初始化global object没有明确规定,但是保证在main函数执行之前完成初始化,在main结束之前完成清除。一般的编译器都是在main的开始处插入所谓的startup阶段进行初始化,在结束时插入exit阶段来进行清除操作。
如果global object配有constructor的话,那么这个constructor要到程序的startup阶段才会执行。这个过程叫静态初始化。
C++对于在何时初始化global object没有明确规定,但是保证在main函数执行之前完成初始化,在main结束之前完成清除。一般的编译器都是在main的开始处插入所谓的startup阶段进行初始化,在结束时插入exit阶段来进行清除操作。
#6
全军变量存放在全局数据区,在main函数前初始化
#7
学习!
#8
编译器是如何初始化全局变量的
=================
如果初始化数据是常数,那就在链接时候完成,链接器将初始化好的全局数据放在可执行文件的数据段,程序装载后,全局变量就初始化完毕。
如果不是常数,那就在进入main函数前执行初始化操作。
=================
如果初始化数据是常数,那就在链接时候完成,链接器将初始化好的全局数据放在可执行文件的数据段,程序装载后,全局变量就初始化完毕。
如果不是常数,那就在进入main函数前执行初始化操作。
#9
我觉得是和编译器实现有关
#10
up一次
我知道是在main之前完成的,加个断点就知道了,我是想知道这一点是如何做到的
我知道是在main之前完成的,加个断点就知道了,我是想知道这一点是如何做到的
#11
另外,对C程序,startup code 就在CRT0.C中,四个函数对应着四种程序模式。
我不知道C++程序是不是也用的这个。
我就是看不大懂,所以才想请达人给讲讲。如果只是知道是在startup code 里干的,就不用回复了。
我不知道C++程序是不是也用的这个。
我就是看不大懂,所以才想请达人给讲讲。如果只是知道是在startup code 里干的,就不用回复了。
#12
关注!!!!
#13
编译器在定义全局变量的时候就立刻给变量初始化,并赋值为0
#14
看样子是没戏了,最后up一次
#15
楼主想知道的是全局变量是怎样初始化的,而不是在何时初始化。
不过这个问题,我也不清楚,最近在研究编译原理,打算自己定义一个语言,做个小编译器,实现一下,应该能明白很多。到时再来这里。
不过这个问题,我也不清楚,最近在研究编译原理,打算自己定义一个语言,做个小编译器,实现一下,应该能明白很多。到时再来这里。
#16
帮你up
#17
ding
#18
mark!!
#1
。。。。。。。。。。。。。深层次的问题?up
#2
http://blog.chinaunix.net/article.php?articleId=8814&blogId=768
#3
学习
#4
请看 喉结 的深入抢出 mfc 的 c++ 基础知识
http://community.csdn.net/Expert/topic/4064/4064676.xml?temp=.4853022
大家看看这个问题,有价值一下啊
#5
C++中的global object都配置在程序的data segment中,如果没有明确的初始化,将以0为内存中的初值。这个过程是在编译期实现的。
如果global object配有constructor的话,那么这个constructor要到程序的startup阶段才会执行。这个过程叫静态初始化。
C++对于在何时初始化global object没有明确规定,但是保证在main函数执行之前完成初始化,在main结束之前完成清除。一般的编译器都是在main的开始处插入所谓的startup阶段进行初始化,在结束时插入exit阶段来进行清除操作。
如果global object配有constructor的话,那么这个constructor要到程序的startup阶段才会执行。这个过程叫静态初始化。
C++对于在何时初始化global object没有明确规定,但是保证在main函数执行之前完成初始化,在main结束之前完成清除。一般的编译器都是在main的开始处插入所谓的startup阶段进行初始化,在结束时插入exit阶段来进行清除操作。
#6
全军变量存放在全局数据区,在main函数前初始化
#7
学习!
#8
编译器是如何初始化全局变量的
=================
如果初始化数据是常数,那就在链接时候完成,链接器将初始化好的全局数据放在可执行文件的数据段,程序装载后,全局变量就初始化完毕。
如果不是常数,那就在进入main函数前执行初始化操作。
=================
如果初始化数据是常数,那就在链接时候完成,链接器将初始化好的全局数据放在可执行文件的数据段,程序装载后,全局变量就初始化完毕。
如果不是常数,那就在进入main函数前执行初始化操作。
#9
我觉得是和编译器实现有关
#10
up一次
我知道是在main之前完成的,加个断点就知道了,我是想知道这一点是如何做到的
我知道是在main之前完成的,加个断点就知道了,我是想知道这一点是如何做到的
#11
另外,对C程序,startup code 就在CRT0.C中,四个函数对应着四种程序模式。
我不知道C++程序是不是也用的这个。
我就是看不大懂,所以才想请达人给讲讲。如果只是知道是在startup code 里干的,就不用回复了。
我不知道C++程序是不是也用的这个。
我就是看不大懂,所以才想请达人给讲讲。如果只是知道是在startup code 里干的,就不用回复了。
#12
关注!!!!
#13
编译器在定义全局变量的时候就立刻给变量初始化,并赋值为0
#14
看样子是没戏了,最后up一次
#15
楼主想知道的是全局变量是怎样初始化的,而不是在何时初始化。
不过这个问题,我也不清楚,最近在研究编译原理,打算自己定义一个语言,做个小编译器,实现一下,应该能明白很多。到时再来这里。
不过这个问题,我也不清楚,最近在研究编译原理,打算自己定义一个语言,做个小编译器,实现一下,应该能明白很多。到时再来这里。
#16
帮你up
#17
ding
#18
mark!!