10 Stimmen

Wie träge kann die globale Initialisierung in C++ sein?

Ich bin es gewohnt, dass die Initialisierung von globalen/statischen Klassenmitgliedern vor der ersten Zeile von main() stattfindet. Aber ich habe kürzlich irgendwo gelesen, dass der Standard eine spätere Initialisierung erlaubt, um "das dynamische Laden von Modulen zu unterstützen". Ich könnte mir vorstellen, dass dies beim dynamischen Linken der Fall ist: Ich würde nicht erwarten, dass ein Global, das in einer Bibliothek initialisiert wurde, initialisiert wird, bevor ich die Bibliothek geöffnet habe. Innerhalb einer Gruppierung von statisch gelinkten Übersetzungseinheiten (die direkten .o-Dateien meiner Anwendung) fände ich dieses Verhalten jedoch sehr unintuitiv. Passiert das nur beim dynamischen Linken, oder kann es jederzeit passieren? (oder war das, was ich gelesen habe, einfach falsch? ;)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X