static void Main()
{
int i;
int j;
j=10;
i=2;
}
Ist der Speicher im Stapel für Variablen in der Reihenfolge reserviert, in der ihre Deklaration erscheint oder wird sie bei der Initialisierung zugewiesen?Wann ist Speicher für Werttypen in C# reserviert?
Ich denke Variablen werden auf Stapel in der Reihenfolge geladen, in der sie deklariert werden, während Peers anders argumentieren. Also, nach ihnen wird j zuerst auf den Stapel geschoben, während ich argumentiere, dass ich zuerst geschoben werde. Wer hat Recht?
Wenn dies der einzige Code in Main ist, kann das Erstellen im Release-Modus sie möglicherweise komplett aus dem generierten IL-Code entfernen. –
Mögliches Duplikat von [Bejaht, dass eine Variable bereits belegt ist] (http://stackoverflow.com/questions/18140630/ does-declaring-a-variable-already-occupy-memory) – Takarii
Wenn Ihnen die Reihenfolge dieser beiden Variablen auf dem Stapel wichtig ist, machen Sie in Ihrem Programm etwas falsch. Sie sollten Ihr Programm so schreiben, dass es keine Rolle spielt. Die Idee eines Stacks ist selbst ein Implementierungsdetail, ganz zu schweigen davon, wann und wie Variablen hinzugefügt werden. – Servy