Structure size zu groß

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
kevv
User
Beiträge: 5
Registriert: Dienstag 11. März 2014, 01:13

Code: Alles auswählen


from ctypes import *
import sys
import os


LONG                    = c_long
DWORD                   = c_uint
WORD                    = c_ushort
PWORD                   = POINTER(c_ushort)
LPSTR                   = POINTER(c_char_p)
LPBYTE                  = POINTER(c_char)
HANDLE                  = c_void_p
ULONG_PTR               = POINTER(c_ulong)
TCHAR                   = c_char
BYTE                    = c_char
PVOID                   = POINTER(c_void_p)
LPVOID                  = POINTER(c_void_p)
UINT_PTR                = POINTER(c_uint)
LPTHREAD_START_ROUTINE  = DWORD


class MyBuffer(Structure):
    _fields_ = [
    ("text1",   DWORD),
    ("text2",   BYTE * 60)
    ]

class MyBuffer2(Structure):
    _fields_ = [
    ("text1",   DWORD),
    ("text2",   BYTE * 10)
    ]


print sizeof(MyBuffer)    #DWORD = 4 + 60  =  64  ok
print sizeof(MyBuffer2)   #DWORD = 4 + 10  =  16  ?


Hey Leute
wie kommt es das die 2 structure 2 byte mehr hat, als sie sollte ??
Benutzeravatar
bwbg
User
Beiträge: 407
Registriert: Mittwoch 23. Januar 2008, 13:35

Padding. Die Struktur hat ein Vielfaches von 4 bzw. 8 für Bytes (je nach Architektur).
"Du bist der Messias! Und ich muss es wissen, denn ich bin schon einigen gefolgt!"
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Wikipedia hat einen Artikel, welcher das grundlegende Problem erklärt.
Antworten