Wo muss der Java-und der .NET string-Literale wohnen?

Einer aktuellen Frage zu string-literalen in .NET caught my eye. Ich weiß, dass string-Literale sind interniert so, dass unterschiedliche Saiten mit dem gleichen Wert auf das gleiche Objekt beziehen. Ich weiß auch, dass ein string sein kann, interniert Laufzeit:

string now = DateTime.Now.ToString().Intern(); 

Offensichtlich ein string, der ein Praktikum in runtime befindet sich auf dem heap, aber ich hatte angenommen, dass ein literal ist, wird in die Programm Daten-segment (und sagte das auch so in meinem Antwort die besagte Frage). Aber ich erinnere mich nicht sehen, dieses überall. Ich nehme an, dies ist der Fall, da es, wie ich es tun würde und die Tatsache, dass die ldstr IL-Anweisung wird verwendet, um Literale und keine Verrechnung stattzufinden scheint, scheint mich unterstützen.

Zu schneiden eine lange Geschichte kurz, wo string-Literale wohnen? Ist es auf dem heap, das Daten-segment oder einige Ort, den ich noch nicht gedacht?


Edit:, Wenn string-Literale tun befinden sich auf dem heap, Wann werden Sie verteilt?

InformationsquelleAutor Motti | 2008-12-16
Schreibe einen Kommentar