程序员的自我修养读书笔记

74 阅读1分钟

第四章

  • 在linux下,ELF可执行文件默认从地址 0x08048000开始分配。
  • C++的全局对象的构造函数在main之前被执行,C++全局对象的析构函数在main之后被执行。 ELF文件定义了两种特殊的段:
    • .init: 该段里保存的是可执行指令,它构成了进程的初始化代码。因此,当一个程序开始运行时,在main函数被调用之前。Glibc的初始化部分安排执行这个段中的代码。
    • .fini:该段保存着进程终止代码指令,因此,当一个程序的main函数正常退出时,Glibc会安排执行这个段中的代码。 利用这两个段的特性,C++的全局构造和析构函数就由此实现。

TAG

4.6