- Код: Выделить всё
Option Explicit
Private Type Test
b1 As Byte
b2 As Byte
dw As Long
End Type
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Sub Main()
Dim bt(5) As Byte, t As Test
bt(2) = 1
bt(3) = 1
CopyMemory t, bt(0), 6
MsgBox t.b1 & " " & t.b2 & " " & t.dw & vbCrLf + "Куда подевалась единица?", vbQuestion, "Help!"
End Sub
У меня 3-ий и 4-ый байты почему-то не желают входить в структуру. Выложенный код выдал нули. Реально в памяти она занимает 8 байт, вместо положенных 6.То есть между b2 и dw 2 байта не входящих в структуру, видимо использованных, для выравнивания до DWORD. Если мне не изменяет память, то так быть не должно. Похоже на покарябанность Basic'а на моём компе, иначе объяснить не могу.
Почему так?