程序提示Null pointer assignment是什么意思!
#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 值插入列




