Я подозреваю, что вы находитесь на «/ platform: x64». Массив байтов будет занимать пространство «24 байта + длина», так как каждый из его элементов имеет байты. Более того, на x64 все размеры округлены до ближайших 8 байтов.
Вот как вы можете измерить размер.
private void TestMemory(){
long before = GC.GetTotalMemory(true);
// Allocation code
long after = GC.GetTotalMemory(true);
double diff = after – before;
Console.WriteLine(“Per object: “ + diff / size);
// Stop the GC from messing up our measurements
GC.KeepAlive(array);
}
Что касается вашего вопроса, why
? Как упомянуто в комментариях, это детали реализации этого языка высокого уровня.
※ Из-за выравнивания памяти ← Как упоминалось в моем ответе
※ Также массивы включают некоторые метаданные, например их размер, чтобы вы не индексировали в случайную память. ← Это может быть связано с первой звездой