[英]Dynamic Array of Structures
我对在网上找到的一段代码有一些疑问,该代码位于http://www.c.happycodings.com/Data_Structures/code9.html 。
**
? 我们是否必须首先malloc()
数组,然后malloc()
数组中的每个元素?
strarray = (struct node **)realloc(strarray, (count + 1) * sizeof(struct node *));
strarray[count] = (struct node *)malloc(sizeof(struct node));
如何完全释放()此数组?
谢谢
strarray
是一个指向指针数组的指针,每个指针都指向一个节点结构。 这是对象数组的基本表示。 对于基本类型,您只能使用一个*
,因为它是指向基本类型数组的指针。 您也可以对结构执行此操作,这仅取决于要对数组执行的操作。
是的,是的。
首先遍历数组,释放每个成员,然后释放数组。 释放的线索:释放已分配的所有内容。
strarray
类型为struct node **
因为它是struct node *
的动态分配数组-即。 指针数组,其中每个元素都指向一个struct node
。
不,根据您要实现的目标,您可以简单地分配一个内存块来保存X struct node
,然后将该指针分配给struct node *
。 编写该代码的人为一个指针数组分配了内存,这就是为什么他们随后调用malloc
为每个单独的struct node
分配内存的原因。
对于他们来说,使用动态指向动态分配的struct node
的指针数组的可能性,而不是简单地分配单个连续struct node
块,可能与降低调用realloc
时复制整个数组(如果需要)的成本有关。
要释放内存,请反向进行操作。 释放数组中的每个元素,然后释放整个数组。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.