我有一个结构
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));
我现在必须将 array1 和 array2 指向分配的缓冲区中的正确位置:
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)。