我有一個結構如何應用結構偏移量?
typedef struct foo {
int lengthOfArray1;
int lengthOfArray2;
int* array1;
int* array2;
} foo;
我需要爲整個結構和數組的內容分配足夠的內存。因此,假設每個陣列有長度爲5 ...
foo* bar = (foo*)malloc(sizeof(foo) + (sizeof(int) * 5) + (sizeof(int) * 5));
我現在有指向數組1和數組2到正確的位置在分配的緩衝區:
bar->array1 = (int*)(&bar->lengthOfArray2 + sizeof(int));
bar->array2 = (int*)(bar->array1 + lengthOfArray2);
這是正確的嗎?
編輯#1
只是爲了澄清任何混淆:我試圖保持內存在一個塊,而不是三個。
編輯#2
我不能使用C99作爲MSVC 2010編譯器不支持它(http://stackoverflow.com/questions/6688895/does-microsoft-visual-studio-2010-supports -c99)。
在一個步驟? NO,是不正確的,只有最後一個成員可以用這種方式分配使用靈活數組(C99),看看http://en.wikipedia.org/wiki/Data_padding –
這可以很好地在一個步。請參閱下面的某些答案。 @DavidRF – alk
我不能使用C99 –