C ++: когда (и как) вызываются глобальные статические конструкторы C ++?

я работаю над кодом C ++, и яМы столкнулись с вопросом, который мучил меня некоторое время ... Если яm компилируется с GCC на хосте Linux для цели ELF, где называются глобальные статические конструкторы и деструкторы? I '

слышал тамФункция _init в crtbegin.o и функция _fini в crtend.o. Они вызваны crt0.o? Или динамический компоновщик фактически обнаруживает их присутствие в загруженном двоичном файле и вызывает их? Если так,когда это на самом деле называет их? Я

Мне в основном интересно узнать, чтобы я мог понять, чтопроисходит за кулисами, когда мой код загружается, выполняется, а затем выгружается во время выполнения.

Заранее спасибо!

Обновление: яЯ в основном пытаюсь выяснить общее время, в которое конструкторы вызываются. Я нене хочу делать предположения в моем коде на основе этой информации, этоболее или менее, чтобы лучше понять, чтопроисходит на более низких уровнях, когда моя программа загружается. Я понимаю, что это довольно специфично для ОС, но я попытался немного сузить его в этом вопросе.

Ответы на вопрос(5)

Ваш ответ на вопрос