I have found such strange thing: for the MasterBootRecord structure
//
typedef unsigned char Byte;
typedef unsigned short int Word;
typedef unsigned int Dword;
//
typedef struct
{
    Byte currentPartitionState;
    Byte startPartitionHead;
    Word startCylinderSector;
    Byte partitionType;
    Byte endPartitionHead;
    Word endCylinderSector;
    Dword numSectorsBetweenMbrAndPartition;
    Dword numSectorsInPartition;
} PartitionEntry;
//
typedef struct
{
    Byte executableCode[446];
    PartitionEntry partitionEntry1;
    PartitionEntry partitionEntry2;
    PartitionEntry partitionEntry3;
    PartitionEntry partitionEntry4;
    Word bootRecordSignature;
} MasterBootRecord;
when I try to get sizeof(MasterBootRecord), I get 516 bytes, although right size is 446 + 4*16 + 2 = 512. Why it could be so???
 
    