Das hängt von vielen Faktoren ab.
Zunächst kann der Optimierer diese Variable vollständig löschen (oder nicht). Obwohl es nicht wirklich der Fall in Ihrem Stück Code ist, wenn Sie es wirklich in printf
Aufruf verwenden (was UB ist, wie andere Notiz).
Als nächstes, was meinst du mit "occupancy memory"? Hier wird der Compiler höchstwahrscheinlich einen Teil des Stack-Speichers verwenden, der ohnehin für den Prozess reserviert sein sollte. Und wenn es nicht in main()
wäre, dann wäre dieser Speicher bei der Rückgabe der Funktion freigegeben worden. Es ist also keine "praktische" Verschwendung.
Ich dachte, die '0' noch
Nope initialisiert wurde kein Speicher gemeint. Wenn man "initialisiert" sagt, bedeutet er "auf einen bekannten Wert initialisiert". Auf der anderen Seite bedeutet "nicht initialisiert" nicht "nicht Null", sondern eher "irgendein Müll"/"Ich weiß nicht"/"Es ist mir egal" usw.
In der Funktion ohne 'printf()', wird die Variable wegoptimiert, weil sie nicht verwendet wird. Mit 'printf() 'rufen Sie ein undefiniertes Verhalten auf, weil Sie eine nicht initialisierte Variable referenzieren (drucken) - der Wert ist sicher nicht 0. –
Ihre Frage enthält eine nicht initialisierte Variable (keine initialisierte wie der Titel) –
Das Drucken einer nicht initialisierten Variablen (tatsächlich jedes Zugriffs auf seinen Wert) führt zu undefiniertem Verhalten. – Peter