gpt4 book ai didi

c - 在C中为结构中的数组分配顺序内存地址

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

我想知道如何为另一个结构内的结构数组分配顺序内存。假设我有一个包含 struct2 数组的 struct1,我想将它们全部放在一个连续的内存块中。

我可以使用 malloc 来分配 block ,但我该如何分配数组的内存?

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;
...

谢谢。

最佳答案

使用灵活的数组成员:

#define NUM_ELEM  42

struct a {
/* whatever */
};

struct b {
int c;
struct a d[]; // flexible array member
};

struct b *x = malloc(sizeof *x + NUM_ELEM * sizeof x->d[0]);

关于c - 在C中为结构中的数组分配顺序内存地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12806472/

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