Здравствуйте, Александр, Вы писали:
AS>>Выравнивание?
А>Выравнивание чего?
Выравнивание экземплярных полей. Они не обязательно располагаются в структуре непрерывно. Компилятор может вставлять между ними несколько байтов, не нагруженных смыслом (насколько я понимаю, для оптимизации JIT). Это зависит от их порядка и размера.
Re[4]: Marshal.SizeOf() возвращает не верный размер!?
Здравствуйте, hexamino, Вы писали:
H>Здравствуйте, Александр, Вы писали:
AS>>>Выравнивание?
А>>Выравнивание чего?
H>Выравнивание экземплярных полей. Они не обязательно располагаются в структуре непрерывно. Компилятор может вставлять между ними несколько байтов, не нагруженных смыслом (насколько я понимаю, для оптимизации JIT). Это зависит от их порядка и размера.
ну так как получить натуральный размер структуры?
Re[5]: Marshal.SizeOf() возвращает не верный размер!?
Здравствуйте, Александр, Вы писали:
А>Здравствуйте, hexamino, Вы писали:
H>>Здравствуйте, Александр, Вы писали:
AS>>>>Выравнивание?
А>>>Выравнивание чего?
H>>Выравнивание экземплярных полей. Они не обязательно располагаются в структуре непрерывно. Компилятор может вставлять между ними несколько байтов, не нагруженных смыслом (насколько я понимаю, для оптимизации JIT). Это зависит от их порядка и размера.
А>ну так как получить натуральный размер структуры?
Что вы понимате под "натуральный размер структуры"?
С уважением, Анатолий Попов.
ICQ: 995-908
Re[5]: Marshal.SizeOf() возвращает не верный размер!?
Здравствуйте, hexamino, Вы писали:
H>Здравствуйте, Александр, Вы писали:
А>>ну так как получить натуральный размер структуры?
H>Натуральный — это какой? Сумму размеров полей? Тогда надо доставать список полей через reflection и суммировать.
Спасибо, разобрался (я считал что sizeof() должен возвращать сумму размеров всех полей,а то что компилятор добавляет байты для выравнивания и не предполагал).
Re[7]: Marshal.SizeOf() возвращает не верный размер!?
Здравствуйте, Александр, Вы писали:
А>Здравствуйте, hexamino, Вы писали:
H>>Здравствуйте, Александр, Вы писали:
А>>>ну так как получить натуральный размер структуры?
H>>Натуральный — это какой? Сумму размеров полей? Тогда надо доставать список полей через reflection и суммировать.
А>Спасибо, разобрался (я считал что sizeof() должен возвращать сумму размеров всех полей,а то что компилятор добавляет байты для выравнивания и не предполагал).
LayoutKind.Sequential не гарантирует непрерывности в расположении полей, он лишь фиксирует порядок. Кроме того, он и так применяется к структурам по умолчанию.
Впрочем, может быть, ты и хотел намекнуть на это, приведя эти ссылки.
Re[9]: Marshal.SizeOf() возвращает не верный размер!?
Здравствуйте, nikov, Вы писали:
N>Здравствуйте, samius, Вы писали:
H>>>Кроме того, он и так применяется к структурам по умолчанию. S>>По умолчанию применяется Auto.
N>По умолчанию у классов — Auto, у структур — Sequential.