gpt4 book ai didi

c - struct allocate C 表

转载 作者:行者123 更新时间:2023-11-30 20:41:09 26 4
gpt4 key购买 nike

这是我的结构:

typedef struct wyraz{

char *slowo;
char *tlumaczenie;
struct wyraz *nastepny;

}WYRAZ;

typedef struct lista_tlumaczen{
char znak;
WYRAZ *lista_znakowa;
}LISTA_TLUMACZEN;

我想要这样的东西

LISTA_TLUMACZEN tab[5];

但是动态分配我不知道该怎么做,有人可以帮助我吗?

最佳答案

当您嵌入了指向结构的指针时,您需要考虑分层的内存分配。在这种情况下,首先从最高级别开始效果最好。所以从以下开始:

LISTA_TLUMACZEN tab[5];

这里你说你想要一个 pLISTA_TLUMACZEN 结构的表。如果您希望它是动态的,那么您需要一个指向 LISTA_TLUMACZEN 的指针:

LISTA_TLUMACZEN *tab;

然后要分配它,您需要确定它有多大。在本例中,我们会说NUMBER_OF_ELEMENTS:

tab = (LISTA_TLUMACZEN *)malloc(sizeof(LISTA_TLUMACZEN) * 5);

如果您想特别安全地保证 malloc 参数不超出范围,您可以使用:

tab = (LISTA_TLUMACZEN *)(NUMBER_OF_ELEMENTS <= (SIZE_MAX / sizeof(LISTA_TLUMACZEN)) ? malloc(sizeof(LISTA_TLUMACZEN) * 5) : NULL);

现在我们有了与 tab[5] 数据声明等效的动态分配内容。请注意,它是一个 LISTA_TLUMACZEN 结构表。因此要分配的内存量是 5 与结构体大小的乘积。

您的LISTA_TLUMACZEN结构还有一个指向另一个具有更多指针的结构的指针。您可以按照相同的逻辑分配这些资源,或者实际上仅在程序需要它们时根据需要分配它们,并在不再需要它们时释放它们(这就是动态分配的原因)。如果您所做的只是使用 malloc 预分配所有内容,那么就没有意义,您最好静态声明所有内容。

关于c - struct allocate C 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17254760/

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