Dies ist der Code, den ich in x86 verwenden und x64C# Short, Byte dauert 4 Byte in x86
static unsafe void Main(string[] args)
{
short a = 4;
short b = 5;
short* x = &a;
short* y = &b;
Console.WriteLine((int)x);
Console.WriteLine((int)y);
Console.ReadLine();
}
für x86 Ich mag Antwort bin immer "xxxxx224 xxxxx220" für x64 i Antwort bin immer wie "XXXXX000 xxxxx002"
Warum ist der Short, Byte, Bool Punkt 4 Bytes in x86 und normal auf x64
Sie erhalten nicht einmal das gleiche Klassenlayout. AFAIK the JIT kann frei wählen, was auch immer es hier gefällt. Auf einer Seite gibt es Ausrichtungsbedenken, auf der anderen Seite Größenbeschränkungen. Auch das 32-Bit-JIT und das 64-Bit-JIT sind vollständig separate Codeabschnitte. Sie müssen nicht gleich arbeiten. – Joey
Was haben Sie außerdem von einer Antwort hier? Wenn Sie sich um das Speicherlayout kümmern, gibt es bessere Möglichkeiten, es zu steuern, z. mit Attributen für Strukturelemente. Wenn nicht, dann warum? – Joey
Ich versuche zu lernen, wie die Dinge damit arbeiten. Ich konnte nicht lösen, warum 32 Bit JIT dies tut und 64 Bit JIT reagiert auf andere Weise. Gibt es einen bestimmten Grund dafür? – Pradeep