01_程序代码的”生老病死“

1、C/C++程序执行的全过程

   预处理  gcc -E main.c -o main.i                   将源代码进行预处理操作,生成预处理代码(.i)           
   编    译    gcc -S main.i -o main.s        将预处理文件进行编译,生成汇编代码(.s)
   汇    编    gcc -c main.s -o main.o    (-c小写)      将汇编代码进行汇编,生成机器码(.o) (也叫目标代码)
   链    接    gcc main.o -o main.exe (a.out)    将机器码和其他目标文件以及动静态链接库进行链接,生成可执行程序(a.out 或 .exe)

2、main函数执行前后发生了什么?

  main执行之前:初始化系统相关资源
    1、分配内存,设置栈指针,初始化main函数内局部变量(栈)
       2、初始化static静态变量、全局变量(.data)
    3、未初始化的部分全局变量赋初值(.bss)
    4、调用构造函数初始化全局对象
  main执行之后:
    1、调用析构函数,释放全局对象以及内存
    2、对其他函数局部变量进行内存申请,赋值初始化,内存回收等操作

 

    

posted @ 2022-01-22 18:19  尘落曦枫  阅读(48)  评论(0编辑  收藏  举报