1.main函数的原型为int main(int argc, char* argv[], char* env[]),可以打印出传入参数和环境变量。
2.main函数的返回值虽然是int(占4个字节),但却只用了1个字节保存返回值。正确的返回值是0xreturn&0xff.在bash里执行echo $?查看程序退出码。
3.main函数之前执行部分,全局变量构造函数,__attribute__((constructor))func()函数随后运行。
4.main函数之后执行部分,atexit的注册函数,全局变量析构函数,__attribute__((destructor))func()函数等依次执行。
#include <stdio.h>
#include <stdlib.h>
__attribute__((constructor))void befor_main (void)
{
printf("%s \n", __func__);
return;
}
__attribute__((destructor))void after_main(void)
{
printf("%s \n", __func__);
return;
}
void atexit_register(void)
{
printf("hello, I'm atexit_register \n");
}
//aexit在after_main之前执行
int test_atexit()
{
atexit(atexit_register);
return 1;
}
class Global
{
public:
Global()
{
printf("hello, I'm constructor of Global\n");
}
~Global()
{
printf("hello, I'm destructor of Global\n");
}
};
Global g_variable;//全局变量,静态变量在编译时就已经分配好了内存的!
int main(int