diff --git a/minimal_heap.h b/minimal_heap.h index fd5c0cf..a7877e7 100644 --- a/minimal_heap.h +++ b/minimal_heap.h @@ -97,7 +97,13 @@ typedef struct _MIHP_HeapMemoryAreaHeader typedef struct _MIHP_AllocationCustomMetadata { - uint8_t data[16]; + union + { + uint8_t AsU8 [sizeof(size_t) * 2]; + uint16_t AsU16 [sizeof(size_t) * 1]; + uint32_t AsU32 [sizeof(size_t) / 2]; + uint64_t AsU64 [sizeof(size_t) / 4]; + }; } MIHP_AllocationCustomMetadata; typedef struct _MIHP_HeapSegmentHeader diff --git a/minimal_heap_test.cpp b/minimal_heap_test.cpp index 7f57335..ff0e663 100644 --- a/minimal_heap_test.cpp +++ b/minimal_heap_test.cpp @@ -62,7 +62,7 @@ int main() MIHP_AllocationCustomMetadata metadata = { 0 }; void* ptr = GetThisAddress(); - memcpy(&metadata.data, &ptr, sizeof(void*)); + memcpy(&metadata.AsU8, &ptr, sizeof(void*)); MIHP_SetPointerCustomMetadata(&myHeap, myptrs[i], metadata); MIHP_ValidateHeap(&myHeap); @@ -71,7 +71,7 @@ int main() MIHP_GetPointerCustomMetadata(&myHeap, myptrs[i], &outMetadata); void* returnPtr; - memcpy(&returnPtr, &outMetadata.data, sizeof(void*)); + memcpy(&returnPtr, &outMetadata.AsU8, sizeof(void*)); MIHP_ASSERT(ptr == returnPtr); #endif