zoukankan      html  css  js  c++  java
  • C/C++Program receive signal SIGSEGV,Segmentation fault问题

    情况一:

    代码及调试发现的问题如下图:

     1 #include<stdio.h>
     2 #include<malloc.h>
     3 typedef struct LNode{
     4 int data;
     5 struct LNode *next;
     6 }LNode,*Linklist;
     7 
     8 void Create_Link_pos(LNode* L){ //正序插入-尾插法
     9     Linklist p,q;//p用来指示链尾,q指示新的待插入节点;
    10     int len;
    11     scanf("%d",&len);
    12     L->data=len; //带头结点,用头节点数据域存放链表长度
    13     p=L;
    14     int num;
    15     for(int i=1;i<=len;i++){
    16         q=(LNode*)malloc(sizeof(LNode));
    17         scanf("%d",&num);
    18         q->data=num;
    19         p->next=q;
    20         p=q;
    21     }
    22     p->next=NULL;
    23 }
    24 void Create_Link_rev(LNode* L){ //逆序插入-头插法
    25    
    26     int len;
    27     scanf("%d",&len);
    28     L->data=len;//带头结点,用头节点数据域存放链表长度
    29     int num;
    30     for(int i=1;i<=len;i++){
    31         Linklist q=(LNode*)malloc(sizeof(LNode));
    32         scanf("%d",&num);
    33         q->data=num;
    34         q->next=L->next;
    35         L->next=q;
    36     }
    37 }
    38 
    39 void Printf_Link(LNode* L){
    40     Linklist p=L->next;
    41     while(p!=NULL){
    42         printf("%d ",p->data);
    43         p=p->next;
    44 }
    45 printf("
    ");
    46 }
    47 
    48 
    49 int main(){
    50       Linklist h1,h2;
    51     //h1=(LNode*)malloc(sizeof(LNode));
    52     //h2=(LNode*)malloc(sizeof(LNode));
    53       h1->next=NULL;
    54       h2->next=NULL;
    55       Create_Link_pos(h1);
    56       Printf_Link(h1);
    57       Create_Link_rev(h2);
    58       Printf_Link(h2);
    59       return 0;
    60 
    61 }

    问题在于h1是野指针,没有开辟空间便执行了h1->next语句;

    解决方法: 在出错句前面增加
    h1=(LNode*)malloc(sizeof(LNode));

    及把上面贴出来的代码,出错行前面两行注释取消注释即可

    情况二:

    scanf输入不加取地址符

    情况3:

     写数组时,pre或者cur越界

    情况三,指针未正确赋值:

     本来中序+层次遍历返回构造好的二叉树根指针,但由于中间”=“写成了”==“,导致未能出现赋值,遍历的时候便出现内存访问错误。

    更新:2020-4-6

  • 相关阅读:
    HTML5 完美解决javascript中iphone手机和android手机复制文本到剪切板问题
    去除移动端alert/confirm的网址(url)
    项目通过tomcat部署到服务器,请求数据中文乱码问题
    JEECG中表单提交的中断
    mysql数据库1129错误
    java中比较两个double类型值的大小
    spring配置上传文件大小
    GET方式,获取服务器文件
    java中多个数字运算后值不对(失真)处理方法
    V-rep学习笔记:关节力矩控制
  • 原文地址:https://www.cnblogs.com/debug-the-heart/p/12288906.html
Copyright © 2011-2022 走看看