运行 在 C 语言的双向链表中插入开始(头)函数时出现时间错误?

Run Time Error in insert at beginning (head) function in a Doubly Linked List in C?

请指出我代码逻辑上的错误(如果有的话)。它是一个试图在C语言的双向链表的开头插入一个元素的函数。

struct DLL *insertAthead(struct DLL *head, int newData)
{
    struct DLL *p = (struct DLL *)malloc(sizeof(struct DLL *));
    p->prev = NULL;
    p->next = head;
    head->prev = p;
    p->data = newData;
    head = p;
    return head;
}
struct DLL *p = (struct DLL *)malloc(sizeof(struct DLL *));

应该是:

struct DLL *p = malloc(sizeof(struct DLL));
                       ^^^^^^^^^^^^^^^^^^

目前您只分配指针的大小 (struct DLL *),而不是 struct DLL.

所需的任何大小

请注意,有些人喜欢这样写上面的内容:

struct DLL *p = malloc(sizeof(*p));

这可以说更稳健。

请注意,我还删除了多余的强制转换,这本身并不是一个错误,但只是不必要的混乱 and can in some cases be dangerous