Int16 - Bytes Kapazität in.net?
Warum tut :
short a=0;
Console.Write(Marshal.SizeOf(a));
zeigt an2
Aber wenn ich den IL-Code sehe, sehe ich:
/*1*/ IL_0000: ldc.i4.0
/*2*/ IL_0001: stloc.0
/*3*/ IL_0002: ldloc.0
/*4*/ IL_0003: box System.Int16
/*5*/ IL_0008: call System.Runtime.InteropServices.Marshal.SizeOf
/*6*/ IL_000D: call System.Console.Write
Der LDC in Zeile 1 gibt Folgendes an:
0 auf den Stapel schieben alsint32.
Also muss es gegeben haben4
Bytes belegt.
AbersizeOf
zeigt an2
Bytes ...
Was vermisse ich hier? Wie viele Bytes nimmt Short tatsächlich in Mem auf?
Ich habe von Situationen gehört, in denen eine Auffüllung auf 4 Bytes erfolgt, damit es schneller geht. ist es auch hier so?
(Bitte ignoriere das syncRoot und das GC Root Flag Byte, ich frage nur nach 2 vs 4)