在这个问题中,详细解释了字符数组的 malloc 用法。
When should I use malloc in C and when don't I?
C 中的结构也是如此吗?
例如,考虑以下定义:
struct node
{
int x;
struct node * link;
}
typedef struct node * NODE;
考虑上述结构的以下两种用法:
1)
NODE temp = (NODE) malloc(sizeof(struct node));
temp->x =5;
temp->link = NULL;
2)
struct node node1, *temp;
node1.x = 5;
node1.link = NULL;
temp = &node1;
我可以使用第二个示例中的 temp
声明,并使用以下命令修改 node1.link
指向另一个结构 struct node node2
temp->link = &node2
(指向node2结构的指针)?
这里,该实现用于创建树形数据结构。
这些结构是否也遵循与上面链接中所述的类似数组相同的规则?
因为我见过的很多实现都是遵循第一种用法的。使用 malloc
有什么具体原因吗?
最佳答案
您可以执行 #2 中描述的操作,但请记住,只有当 node1
在范围内时它才会起作用。如果node1是函数中的局部变量,那么当函数返回时,它引用的内存位置将被回收并用于其他用途。程序中仍然指向 &node1
的任何其他指针将不再有效。使用 malloc
动态分配内存的优点之一是,在您调用 free
显式释放内存之前,内存一直有效。
关于c - 用于字符数组和结构的 Malloc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20897909/