В .NET:
- Массивы обычно хранятся в куче (если вы не используете что-то вроде
stackalloc
в C #)
- Если вы создаете массив значений ссылочного типа (например, строки), массив только содержит ссылки
- Ссылка составляет 4 байта при запуске 32-битного CLR и 8 байтов при запуске 64-битного CLR
- Хотя сам массив является непрерывным в памяти, нечего сказать, что сами строки будут смежными
Так что в вашем случае сам объект массива будет
normal object overhead
+ 4 bytes for the length (IIRC)
+ (4 or 8 bytes per element) * 6 elements
Ссылки в массиве могут ссылаться на любую строку в любом месте памяти или Nothing
.
Для типов значений массив хранит значение напрямую - поэтому массив Int32
s займет:
normal object overhead
+ 4 bytes for the length
+ 4 bytes per element
Массив Int64
s займет:
normal object overhead
+ 4 bytes for the length
+ 8 bytes per element
(и т.д.). Логические значения занимают байт на элемент, несмотря на то, что логически это всего один бит.