大神帮忙看看为什么链表释放不了?
#include <stdio.h>
#include <stdlib.h>
typedef struct node *link;
struct node
{
unsigned int data;
link next;
};
link make_node(unsigned int data);
void free_node(link p);
int main(void)
{
link p = make_node(5);
free_node(p);
return 0;
}
link make_node(unsigned int data)
{
link p;
p = (link )malloc(sizeof(p));
p->data = data;
p->next = NULL;
return p;
}
void free_node(link p)
{
free(p);
}
编译通过, 执行跳出对话框, debug error ; DAMAGE: after Normal block(#55) at 0x00292E40
[解决办法]
在make_node函数中malloc里面不应该是sizeof(p),p是指针,只有四个字节,应该改为sizeof(struct node)才对,这样才不会非法访问到其他的地址空间
[解决办法]
sizeof(struct node)!sizeof运算符是针对类型的,不是针对变量