Seite 1 von 1

Structure size zu groß

Verfasst: Dienstag 11. März 2014, 02:08
von kevv

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 ??

Re: Structure size zu groß

Verfasst: Dienstag 11. März 2014, 06:35
von bwbg
Padding. Die Struktur hat ein Vielfaches von 4 bzw. 8 für Bytes (je nach Architektur).

Re: Structure size zu groß

Verfasst: Dienstag 11. März 2014, 08:09
von DasIch
Wikipedia hat einen Artikel, welcher das grundlegende Problem erklärt.