Ich versuche zu lernen, die Details hinter, wie der Compiler funktioniert und ich frage mich, was das Symbol B bedeutet, wenn nm verwendet. Ich habe versucht, std :: cout in libstdc folgen ++, aber es endet mitnm nicht initialisierten Daten Abschnitt
nm -DC /usr/lib/libstdc++.so.6 | grep cout
000e8da0 B std::cout
000e9020 B std::wcout
Wenn der Link auf die eigentliche Funktion ist und was bedeutet das B bedeuten?
Also wird cout << "was auch immer" als std :: cout-Objekt instanziiert und ruft dann den std :: operator auf, um es auszudrucken? – victor
std :: cout ist wahrscheinlich ein globales Objekt und wird daher in den globalen Bereich (bss) gestellt. Irgendwo, bevor Ihr Programm 'main' aufgerufen wird, führt die Plattform einen Konstruktor aus und initialisiert std :: cout (und andere globale Variablen). – nos