我有一个结构如何应用结构偏移量?
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 –