gpt4 book ai didi

c - 如何应用结构偏移量?

转载 作者:太空狗 更新时间:2023-10-29 15:22:26 26 4
gpt4 key购买 nike

我有一个结构

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

只是为了消除任何混淆:我试图将内存保留在一个 block 中,而不是三个。

编辑 #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);

关于c - 如何应用结构偏移量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12879404/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com