当您嵌入了指向结构的指针时,您需要考虑分层内存分配。在这种情况下,首先从最高级别开始效果最好。所以开始:
LISTA_TLUMACZEN tab[5];
在这里你说你想要一个 pLISTA_TLUMACZEN
结构表。如果您希望它是动态的,那么您需要一个指向 a 的指针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
那么没有意义,您也可以静态声明所有内容。