【问题标题】:Program received signal SIGSEGV, Segmentation fault. when debugging程序收到信号 SIGSEGV,分段错误。调试时
【发布时间】:2014-07-20 15:19:41
【问题描述】:

如果我调试我的代码,则会收到“程序收到信号 SIGSEGV,分段错误”。这是我的代码-

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

int main()
{
    struct term
    {
        char* name;
        long int id;
        float term_gpa;
    };
    struct term *term_ptr, student;

    term_ptr = &student;

    strcpy( term_ptr->name,"niton");
    term_ptr->id = 942044;
    term_ptr->term_gpa = 3.75;

    printf("Name : %s",term_ptr->name);
    printf("Name : %s",student.name);

    getch();
    return 0;
}

我在第 17 行收到此错误。请帮助我!对不起我的英语不好。

【问题讨论】:

    标签: c segmentation-fault codeblocks


    【解决方案1】:

    你需要为term_ptr-&gt;name分配内存

    【讨论】:

    • 谢谢,但如果我像这样更改第 17 行- term_ptr->name = "niton";然后不会发生错误!再次感谢
    • 如果您这样做,您只需将字符串文字分配给您的指针。如果您只想使用 term_ptr->name 进行阅读,那没关系。不过,试着往里面写点东西……看看会发生什么。
    【解决方案2】:

    改变这个:

    strcpy( term_ptr->name,"niton");
    

    到这里:

    term_ptr->name = strdup("niton");
    

    【讨论】:

    • 除非您稍后要释放 temp_ptr->name,否则无需 strdup 字符串字面量。
    猜你喜欢
    • 2013-06-03
    • 1970-01-01
    • 1970-01-01
    • 2019-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-09
    • 1970-01-01
    相关资源
    最近更新 更多