QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 943|回复: 7

结构指针一个不大明白的地方,在turboc可以通过

[复制链接]
发表于 2005-8-17 14:23:17 | 显示全部楼层 |阅读模式
#include<stdio.h>

struct Node{

int prime;
       
int count;
       
struct Node *next;
};

main()
{
       
struct Node *head,*p;
       
p=(struct Node*)(malloc(sizeof(struct Node)));
       
p->prime=2;
       
head->next=p;/*this line of code makes me fustrated*/
       
printf("%d",head->next->prime);

}
显示segment fault 请教高人指点,我刚刚接触gcc
发表于 2005-8-17 14:58:01 | 显示全部楼层
head->next=p

head还没有空间吧
回复

使用道具 举报

发表于 2005-8-17 15:04:03 | 显示全部楼层
我认为,指针类型的head还没有分配内存,它指向的是随机的内存地址,所以会出错。
不知道我这么理解对不对,请各位指正。
回复

使用道具 举报

发表于 2005-8-18 08:55:14 | 显示全部楼层
head的空间分配一下就好了!
玩结构的指针就这么恶心!
回复

使用道具 举报

发表于 2005-8-19 02:39:06 | 显示全部楼层
楼主真强……
指针不分配空间也敢用……
malloc一下吧……习惯不好啊……

要是你的这个程序是在uClinux上……Hohoho弄不好看你怎么哭……
回复

使用道具 举报

发表于 2005-8-19 02:42:15 | 显示全部楼层
Turbo C可以运行的原因是,
TC是没有运行在保护模式下的,不会分辨哪个程序只应该使用哪些空间……
你给那个初始随机指针的东西赋值……已经覆盖了内存中的某个区域了……
但是因为没有保护所以不会报错,我保证你随便找个Win32的编译器也会出错的。
回复

使用道具 举报

 楼主| 发表于 2005-8-19 09:41:41 | 显示全部楼层
多谢wsm JJ
这是个分解质因子的程序。开始用的是数组来传递。然后在用单链表动态分配内存。
觉得这样子空间复杂度有些问题,就打算直接传进去了个链表头。

一个,
回复

使用道具 举报

发表于 2005-8-23 16:18:05 | 显示全部楼层
玩指针就是需要一点勇气的。实际上这点错误不算啥了,以后还有得过瘾呢。
这样的错误很明显,当你要面对一个C语言的工程里面的内存泄漏的时候,哇。
那郁闷劲估计抽大麻都缓不过来。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-5 13:49 , Processed in 0.039067 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表