在我在merge_List函数中为指针C动态分配内存之前,代码不起作用。
如果我取消评论escaped="true"
并发表评论
list c = (list)malloc(sizeof(Node));
,该代码有效。
我不知道为什么谁能向我解释?
该代码非常简单,因此没有太多注释。
谢谢!
list c;
答案 0 :(得分:1)
进行了一些检查,但这是结构的类型
list {aka struct Node *}
根据编译器。换句话说,list是一个指针,调用malloc将为该指针分配内存。
您之前在函数create_Node()中执行此操作,紧接在后
list head = (list)malloc(sizeof(Node));
如果不执行此操作,则说明您正在对未初始化的指针执行操作,这是未定义的行为,并且由于您在使用的内存中没有明显的位置而无法正常工作。
在这种情况下,malloc专门执行的操作将分配Node字节的大小,并返回一个void指针,将其转换为列表(或Node *)。列表将不再被初始化,并且不再具有未定义的行为,这就是它起作用的原因。