C中的内存泄漏

时间:2019-01-16 00:27:53

标签: c memory

在我在merge_List函数中为指针C动态分配内存之前,代码不起作用。

如果我取消评论escaped="true"并发表评论 list c = (list)malloc(sizeof(Node));,该代码有效。    我不知道为什么谁能向我解释?    该代码非常简单,因此没有太多注释。    谢谢!

list c;

1 个答案:

答案 0 :(得分:1)

进行了一些检查,但这是结构的类型

list {aka struct Node *}

根据编译器。换句话说,list是一个指针,调用malloc将为该指针分配内存。

您之前在函数create_Node()中执行此操作,紧接在后

list head = (list)malloc(sizeof(Node));

如果不执行此操作,则说明您正在对未初始化的指针执行操作,这是未定义的行为,并且由于您在使用的内存中没有明显的位置而无法正常工作。

在这种情况下,malloc专门执行的操作将分配Node字节的大小,并返回一个void指针,将其转换为列表(或Node *)。列表将不再被初始化,并且不再具有未定义的行为,这就是它起作用的原因。