Chinaunix首页 | 论坛 | 博客
  • 博客访问: 41763
  • 博文数量: 17
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 150
  • 用 户 组: 普通用户
  • 注册时间: 2013-08-05 09:59
文章分类
文章存档

2014年(8)

2013年(9)

我的朋友

分类: LINUX

2013-11-07 21:06:10

在ubuntu中,代码在编译过程中出现"段错误"有以下3中情况:
 1)访问系统数据区,尤其是往 系统保护的内存地址写数据    最常见就是给一个指针以0地址 

   2)内存越界(数组越界,变量类型不一致等

   3) 访问到不属于你的内存区域 
以下是我的代码:
#include
#include

typedef struct NODE
{
    struct NODE *link;
    int        value;
}Node;

int insert(Node **rootp,int new_value)
{
    Node *current;
    Node *previous;
    Node *new;

    current=*rootp;
    previous=NULL;

    while(current!=NULL&¤t->value     {
        previous->link=current;
        current=current->link;

        new=(Node*)malloc(sizeof(Node));
        if(new==NULL)
            return 0;
        new->value=new_value;
        new->link=current;
        if(previous==NULL)
            *rootp=new;
        else
            previous->link=new;
        return 1;

    }
}
int main(void)
{
    int result;
    int root;
    result=insert(&root,12);
    printf("the result is %d\n",result);
}
运行结果:root@ubuntu:/home/c和指针# ./P240
段错误 (核心已转储)



阅读(742) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~