今天看到《程序员的自我修养》这本书的第四章,上面讲到加载器在执行mian函数之前会先进行一些初始化的操作,包括堆分配和C++中全局对象的构造函数的调用,所以下面用一个小程序来验证下。
#include<stdio.h>
void __attribute__((__section__(".init"))) fun()
{
printf("the init function\n");
main();
}
int main()
{
printf("the main function\n");
return 0;
}
__attribute__(段) 能够制定参数或者函数存在elf文件的哪个段中,如果放在init段,默认是先执行这个段中的程序。。
本文通过一个小程序实例验证了加载器在执行main函数前的初始化操作,包括调用C++全局对象构造函数和堆分配等过程。使用__attribute__((__section__(".init")))属性指定初始化函数在ELF文件的.init段中,确保其在main函数前被执行。
641

被折叠的 条评论
为什么被折叠?



