c++ - __do_global_dtors_aux 和 __do_global_ctors_aux

标签 c++ assembly constructor destructor elf

我反汇编了一个用C++写的简单程序,有这两个函数名。我猜 ctor 的意思是构造函数,dtor 的意思是析构函数,而 global 这个词可能意味着它们创建和销毁全局对象。我猜不出辅助的名字。这两个函数有什么作用?

最佳答案

静态对象的构造函数析构函数 的地址分别存储在ELF 可执行文件 的不同部分中。对于构造函数,有一个名为 .CTORS 的部分,对于析构函数,有一个名为 .DTORS 的部分。

编译器创建两个辅助函数__do_global_ctors_aux__do_global_dtors_aux分别调用这些静态对象的构造函数和析构函数。

__do_global_ctors_aux 函数只是在 .CTORS 部分执行遍历,而 __do_global_dtors_aux 只对 执行相同的工作。 DTORS 部分包含程序指定的析构函数。

关于c++ - __do_global_dtors_aux 和 __do_global_ctors_aux,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6477494/

相关文章:

c++ - (Qt C++) QPushButton setIcon() 不工作

python - OpenCV : Python equivalent of `setTo` in C++

assembly - 我是在写程序集还是 NASM?

c - #pragma intrinsic 是什么意思?

c++如何写一个构造函数?

c++ - 在 dlopen 检测重复符号

c++ - 通常在 C++ 中使用 const 指令,特别是在 Tiny XML 库中 :

CPU TSC fetch 操作,尤其是在多核多处理器环境中

Java:0 arg 构造函数和构造函数的问题

c++ - 快速了解 C++ 数组类构造函数