15
C++文件的编译(全球静态对象),我在nm
输出获得此功能后:克++ __static_initialization_and_destruction_0(INT,INT) - 什么是
00000000 t _Z41__static_initialization_and_destruction_0ii
__static_initialization_and_destruction_0(int, int) /* after c++filt */
这是什么?它将调用__cxa_atexit()
我可以禁用此功能(和调用__cxa_atexit()
)的产生,并把所有构造函数和析构函数调用.ctors
和.dtors
板块?
g ++确实有'-fno-use-cxa-atexit'命令行选项,但我认为这不会有帮助。看起来它只是使用'atexit()'而不是'cxa_atexit()'。也许更好的问题是为什么g ++生成'__static_initialization_and_destruction_0()',而不是将构造函数和析构函数调用放在'.ctors'和'.dtors' ELF部分。据推测,这有一个很好的理由。 – Void 2011-03-04 21:35:23