TC源代码到vc++6.0后的问题

不若人生一场醉 2007-04-28 12:01:56
一个链表
typedef struct node
{
int data;
struct node link;
}Node

一段初始化的代码:
Node** Header;//指向表头指针的指针
Header=(Node**)malloc(sizeof(Node*));
(*Header)->link=NULL;//初始化为空链表

在tc2.0中,这段代码没有任何问题,可在vc++6.0中,这个语句
(*Header)->link=NULL;会引起内存泄露,为什么?
...全文
148 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
jixingzhong 2007-04-28
  • 打赏
  • 举报
回复
如果没有 (*Header)=(Node*)malloc(sizeof(Node)); 这样进行分配空间,
那么 (*Header)->link=NULL; 这样的操作是在操作非法内存,
因为 *Header 指向的节点并不存在。

PS:
纠正错误:不是引起内存泄露,而是内存非法访问
jixingzhong 2007-04-28
  • 打赏
  • 举报
回复
Header=(Node**)malloc(sizeof(Node*));
(*Header)=(Node*)malloc(sizeof(Node)); //请先对 *Header 分配空间
(*Header)->link=NULL;//初始化为空链表
  • 打赏
  • 举报
回复
恩,懂了

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧