结构体分配C的表



这是我的结构:

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

这里你是说你想要一个p个LISTA_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预分配所有内容,那么就没有意义了,您还可以静态地声明所有内容。

相关内容

  • 没有找到相关文章

最新更新