CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Linux/Unix社区 >  内核及驱动程序研究区

程序提示Null pointer assignment是什么意思!

楼主winbondowen(放开)2006-03-29 13:12:30 在 Linux/Unix社区 / 内核及驱动程序研究区 提问

#include   "stdio.h"  
  struct   line  
  {  
  struct   line   *me;  
  };  
  struct   data  
  {  
  struct   line   *next;  
  int   data;  
  };  
  void   main()  
  {  
  struct   data   *head,*now;  
  head=(struct   data*)malloc(sizeof(struct   data));  
  now=(struct   data*)malloc(sizeof(struct   data));  
  head->next->me=(struct   line*)now;  
  head->data=10;  
  now->data=20;  
  now=head;  
  printf("Head.Data=   %d\n",head->data);  
  head=(struct   data*)head->next->me;  
  printf("Head.Data=   %d",head->data);  
  free(now);  
  free(head);  
  printf("\nGame   Over\n");  
  return;  
  }  
  运行的结果为  
  Head.Data=10  
  Head.Data=20  
  Game   Over  
  Null   pointer   assignment  
  这个Null   pointer   assignment是怎么产生的。  
  是我没有及时释放相关指针造成的吗?  
  请兄弟/姐妹们指点?  
  问题点数:20、回复次数:6Top

1 楼fierygnu(va_list)回复于 2006-03-29 13:30:21 得分 2

head->next->me=(struct   line*)now;  
  head->next没赋值就用了。Top

2 楼winbondowen(放开)回复于 2006-03-29 20:36:19 得分 0

那该怎样使用?  
  小娃子我不明白Top

3 楼fierygnu(va_list)回复于 2006-03-29 21:41:52 得分 3

//faint  
  指针要分配空间后才能解引用。Top

4 楼tb01412(tb)回复于 2006-03-29 22:52:18 得分 5

head=(struct   data*)malloc(sizeof(struct   data));  
  这一句仅仅是为head分配了空间,它里面存放了(   struct   line   *next;仅仅只是一个指针,)(int   data;,此为一个四字节的数据),此时你并未对   line结构体分配存储空间(上面仅仅只是分配了一个指针的空间,并未对其指向的内容分配空间),所以此时,你可以使用head->line,这没有问题,但你若使用了head->line->me,那么line所指向的空间未分配,它的成员就不能引用了,引用时就会出现一个错误的!!!!你应该这样用:  
  head->line = (struct   line)malloc(sizeof(struct   line));  
   
  先回去补习一下C语言吧Top

5 楼tb01412(tb)回复于 2006-03-29 22:55:11 得分 10

纠正一下:  
  head=(struct   data*)malloc(sizeof(struct   data));  
  这一句仅仅是为head分配了空间,它里面存放了(   struct   line   *next;仅仅只是一个指针,)(int   data;,此为一个四字节的数据),此时你并未对   line结构体分配存储空间(上面仅仅只是分配了一个指针的空间,并未对其指向的内容分配空间),所以此时,你可以使用head->next,这没有问题,但你若使用了head->next->me,那么next所指向的空间未分配,它的成员就不能引用了,引用时就会出现一个错误的!!!!你应该这样用:  
  head->next = (struct   line   *)malloc(sizeof(struct   line));Top

6 楼winbondowen(放开)回复于 2006-04-02 14:50:06 得分 0

好!  
  明白了。  
  谢谢!  
  用的太少,死看书是没有用的。  
  小弟明白了。Top

相关问题

  • 问题十六:一个提示:NULL pointer assignment。
  • Null assignment pointer,为什么?
  • 为什么会出现 Null pointer assignment??
  • C程序运行结果没什么错误,但是在程序运行结果的最后有个:Null pointer assignment的提示信息。为什么出这个错怎么决解?
  • 用TC看显示结果,出现了“Null Pointer Assignment”,是怎么回事,请指教
  • 在线等订阅时提示:名称不能是NULL
  • 为什么总提示 invalid pointer operation 这种错误?
  • 请帮我看一下下面的程序,为什么每次运行后总是显示“Null pointer assignment”,这是怎么回事?请说的详细一点。
  • NULL pointer assingment是什么意思?
  • 我快逼疯了,老是提示无法将 NULL 值插入列

关键词

  • 指针
  • me
  • 分配
  • head
  • 空间
  • 引用
  • struct
  • line
  • 指向
  • pointer assignment

得分解答快速导航

  • 帖主:winbondowen
  • fierygnu
  • fierygnu
  • tb01412
  • tb01412

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo