首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2012-10-27 
大神帮忙看看为什么链表释放不了?#include stdio.h#include stdlib.htypedef struct node *linkstruc

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

热点排行