I have following struct:
struct SkipListNode{
void *data; // 8 bytes
uint8_t size; // 1 byte
// 7 bytes padding here...
void *next[1]; // dynamic array, 8 bytes each "cell"
};
I am using malloc()
and I am allocating more space than sizeof(SkipListNode)
, so I am extending the next[]
array.
I want to avoid 7 bytes
waste. I can completely remove size field, but then I should keep single NULL
(8 bytes) at the end of the array. However this does not help reducing the size.
Shall I use __ attribute__((__ packed__))
or there some different way I could do the trick?
This must be compiled under C and C++ as well.
Compiler is gcc.