Страница: 1 |
Страница: 1 |
Вопрос: Выравнивание в типе
Добавлено: 30.11.05 16:37
Автор вопроса: LamerOnLine | ICQ: 334781088
Сабж.
Есть тип, в который заполняется по CopyMemory.
Он содержит набор полей типа Long (2 шт), массив байт(33 штуки), шесть полей типа Byte и снова пять полей Long. При копировании памяти один байт (на стыке шести байтов и пяти лонгов) просто пропадает. Если Long заменить на массив из четырех байт - все нормально.
Можно это как-нибудь обойти, чтобы не преобразовывать затем массивы? Или компилятор не позволяет обойти свои глюки?
Ответы
Всего ответов: 1
Номер ответа: 1
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #1
Добавлено: 30.11.05 17:02
Структуры VB выровнены на 4 байта. При работе с API этого не заметно, хоть они и 1, поскольку во всех структурах API выравнивание 1 совпадает с 4.
Однако, VB правильно работает с любым выравниванием, если соответствующая структура описана в tlb.