将动态内存分配显式转换为结构类型时,真正发生了什么?

时间:2019-06-25 17:41:58

标签: c

我已经开始学习链表概念。我遇到了一些代码。如果有人解释下面的代码会发生什么,这将非常有帮助。我尝试搜索,但是找不到正确的答案。

 struct node *new1;
 new1 = (struct node*)malloc(sizeof(struct node));

2 个答案:

答案 0 :(得分:2)

struct node *new1;

这会在堆栈上分配一个类型为“指向结构节点的指针”的局部变量。

new1 = (struct node*)malloc(sizeof(struct node));

这会分配一个适当对齐的内存块,足以容纳struct node(可能来自堆),并将new1设置为指向该新分配的块。块将保持分配状态,直到进程终止或释放该块为止。演员不是必需的。

答案 1 :(得分:0)

malloc返回的内存最初没有类型。然后,当使用一个指针写入该内存时,该内存(最大为给定类型的大小)将成为一个对象,其类型为已取消引用的指针的类型。