我想知道如何为另一个结构体中的结构体数组分配连续的内存。假设我有struct1,其中包含struct2的数组,我希望它们都在一个连续的内存块中。
我可以使用malloc来分配内存块,但是如何分配数组的内存呢?
我可以使用malloc来分配内存块,但是如何分配数组的内存呢?
struct1 *set = malloc(sizeof(struct1) + sizeof(struct2)*number_of_structs);
set->arr = (struct2*)set + sizeof(struct); //This is probably wrong
set->arr[0].data = 1;
set->arr[1].data = 2;
...
谢谢你。
struct b
声明中使用struct a d[1];
而不是struct a d[];
并分配少一个元素:malloc(sizeof *x + (NUM_ELEM - 1) * sizeof x->d[0])
。 - ouah