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.