4.3.8 Piecemeal Structure Allocations
Structures should always be allocated using the
sizeof()
operator on the name of the structure. Never use the sum of the sizes of the structure's members because it does not take into account the padding that the compiler introduces to guarantee alignment. The following example shows two examples for allocating memory for a structure. The first allocation is incorrect, the second allocation is correct.typedef struct {
UINT8 Value8;
UINT64 Value64;
} EXAMPLE_STRUCTURE;
EXAMPLE_STRUCTURE *Example;
//
// Wrong. This only allocates 9 bytes, but MyStructure is 16 bytes
//
Example = AllocatePool (sizeof (UINT8) + sizeof (UINT64));
//
// Correct. This allocates 16 bytes for MyStructure.
//
Example = AllocatePool (sizeof (EXAMPLE_STRUCTURE));
Last modified 2yr ago