我有一个结构
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);
它是否正确?
Edit #1
只是为了消除任何混乱:我试图将内存保留在一个块中,而不是三个块中。
Edit #2
我无法使用 C99,因为 MSVC 2010 编译器不支持它(http://stackoverflow.com/questions/6688895/does-microsoft-visual-studio-2010-supports-c99)。
您必须分配结构的大小。然后,您必须分配整数数组及其各自的大小。
foo* bar = malloc(sizeof(foo));
/* somewhere in here the array lengths are set then... */
bar->array1 = malloc(sizeof(int) * bar->lengthOfArray1);
bar->array2 = malloc(sizeof(int) * bar->lengthOfArray2);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)