Отменить "выравнивание" элементов структур в памяти - Visual Basic .NET
Формулировка задачи:
В прилагаемом примере объявлена объединённая структура, которая может читаться и как массив байт и как подструктура элементов базовых типов.
Если размер каждого элемента подструктуры одинаков (например по 4 байта) всё работает правильно, несмотря на то что в структуру включены различные 4-х байтовые базовые типы данных.
Если размер 1-го элемента подструктуры меньше остальных (например 1 байт против остальных 4-х байтовых) то элемент подструктуры считываемый следом за 1-м будет читаться не со 2-го байта, компилятор зачем то отступает на 3 байта и, естественно, читает мусор.
В С и DELPHI это кажется называлось выравниванием элементов структур.
Как этого избежать?
Решение задачи: «Отменить "выравнивание" элементов структур в памяти»
textual
Листинг программы
- <StructLayout(LayoutKind.Sequential, Pack:=1)> _
- Structure StrData33 '1 + 4x8 = 33 байт
- Public t1 As Byte
- Public v0 As Single
- Public v1 As Single
- Public v2 As Single
- Public v3 As Single
- Public v4 As Single
- Public v5 As Single
- Public v6 As Single
- Public v7 As Single
- End Structure
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д