Здравствуйте, MadHuman, Вы писали:
MH>размер int32 — 4байта, 4*n байт, то есть по физическому размеру элемента?
Да, по физическому размеру. Проверяется элементарно:
using System;
class Program
{
unsafe static void Main(string[] args)
{
var array = new int[10];
for (var i = 0; i < array.Length; ++i)
{
array[i] = i;
}
fixed (int* ptr = array)
{
byte* p = (byte*)ptr;
for (var i = 0; i < array.Length; ++i)
{
Console.WriteLine(*((int*)p));
p += 4;
}
}
}
}
Здравствуйте, MadHuman, Вы писали:
MH>да, спасибо. а когда тогда выравнивание происходит?
MH>только для полей объекта/структуры? или ещё есть варианты?
С выравниванием полей объекта и объектов в массиве всё непросто. Может отличаться для разных рантаймов (Моно/Дотнет) или для разных версий рантайма:
https://www.youtube.com/watch?v=XGtieBVI1lk
Здравствуйте, MadHuman, Вы писали:
Buffer.ByteLength