读书人

大神帮忙见见为什么链表释放不了

发布时间: 2012-10-27 10:42:26 作者: rapoo

大神帮忙看看为什么链表释放不了?
#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运算符是针对类型的,不是针对变量

读书人网 >C语言

热点推荐