Linux C-完美解决segmentation fault (core dumped)

简介: 在Linux下进行C语言编程时,遇到一个错误,网上说的都很复杂,看都看不懂,其实就是你对指针进行直接操作之前,没有对它进行分配地址空间。所以在运行的时候,它不知道在那里操作(比如赋值,取值),所以才报了这个错误。

在Linux下进行C语言编程时,遇到一个错误,网上说的都很复杂,看都看不懂,其实就是你对指针进行直接操作之前,没有对它进行分配地址空间。
所以在运行的时候,它不知道在那里操作(比如赋值,取值),所以才报了这个错误。

在C语言中,定义一个指针变量时,系统不会像在定义基本数据类型一样自动为指针分配地址空间的,所以我们在定义指针变量时要手动为它分配一个地址空间

img_e7a96aa7953f99d17d83054306e996b7.png
image.png

出错代码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define OVERFLOW 0
#define OK  1
#define LIST_INIT_SIZE  100
#define LISTINCREMENY  10
typedef struct{
    char no[20];       //学号
    char name[20];    //姓名
    char sex[5];    //性别
    int age;          //年龄
}student;

int main()
{
    student* stu=NULL;
    stu->age=18;
    strcpy(stu->name,"李四");
    strcpy(stu->no,"20144834638");
    strcpy(stu->sex,"男");

    printf("name:%s, no: %s, sex: %s, age: %d",stu->name,stu->no,stu->sex,stu->age);
    free(stu);

    return 0;
}

解决办法:
为指针变量分配一个地址空间,完美解决。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define OVERFLOW 0
#define OK  1
#define LIST_INIT_SIZE  100
#define LISTINCREMENY  10
typedef struct{
    char no[20];       //学号
    char name[20];    //姓名
    char sex[5];    //性别
    int age;          //年龄
}student;

int main()
{
    student* stu=NULL;
    stu=(student *)malloc(LIST_INIT_SIZE*sizeof(student));  //为指针变量分配地址空间
    stu->age=18;
    strcpy(stu->name,"李四");
    strcpy(stu->no,"20144834638");
    strcpy(stu->sex,"男");

    printf("name:%s, no: %s, sex: %s, age: %d",stu->name,stu->no,stu->sex,stu->age);
    free(stu);

    return 0;
}

运行结果:已经可以正常操作指针了


img_4978f8d8e9f7afa6523d5f88714b2fc3.png
image.png
目录
相关文章
|
5天前
|
NoSQL 安全 Linux
Linux 中 core dump 文件的作用和使用方法
Linux 中 core dump 文件的作用和使用方法
141 1
|
5天前
|
NoSQL Linux
Linux系统调试中出现核心转储(core dump)的问题
Linux系统调试中出现核心转储(core dump)的问题
133 0
|
5天前
|
Linux 程序员 Shell
【Linux】详解core dump文件的作用以及用法&&ubuntu20.04下无法形成core dump文件的解决办法
【Linux】详解core dump文件的作用以及用法&&ubuntu20.04下无法形成core dump文件的解决办法
|
5天前
|
运维 NoSQL Linux
linux环境收集core文件步骤
请注意,生成core文件可能会占用磁盘空间,因此应谨慎使用。一旦完成故障排查,建议将相关的core文件删除以释放磁盘空间。
42 5
|
5天前
|
运维 NoSQL Linux
linux环境收集core文件步骤
请注意,生成core文件可能会占用磁盘空间,因此应谨慎使用。一旦完成故障排查,建议将相关的core文件删除以释放磁盘空间。
22 4
|
6月前
|
存储 NoSQL Linux
【Linux】进程信号中的 core dump 标记位
【Linux】进程信号中的 core dump 标记位
|
6月前
|
NoSQL Linux
Linux下怎样使用core文件查看异常崩溃的程序问题
之前在写程序的时候,遇到了意外崩溃的问题,但是当时并没有生成core文件,想用gdb 对程序进行单步跟踪时,并不能复现。所以想要用core文件看看到底是哪里的问题,这里把问题记录下来当再次遇到时可以解决。
77 0
|
NoSQL Linux Unix
Linux生成core文件、core文件路径设置
在Linux下产生并调试core文件 先看看我用的是个什么机器: $ uname -aLinux dev 2.4.21-9.30AXsmp #1 SMP Wed May 26 23:37:09 EDT 2004 i686 i686 i386 GNU/Linux 再看看默认的一些参数,注意core file size是个0,程序出错时不会产生core文件了。
1168 0
|
5天前
|
安全 网络协议 Linux
linux必学的60个命令
Linux是一个功能强大的操作系统,提供了许多常用的命令行工具,用于管理文件、目录、进程、网络和系统配置等。以下是Linux必学的60个命令的概览,但请注意,这里可能无法列出所有命令的完整语法和选项,仅作为参考
275 2