分段故障

时间:2011-07-09 09:23:41

标签: c segmentation-fault

此代码段有什么问题?我收到Segmentation故障!

#include<stdio.h>

int main()
{
        struct {
                char* name;
                int age;
        } *emp;
        char* empname = "Kumar";
        int empage = 31;
        emp->name = empname;
        emp->age = empage;
        printf("empname :%s\n",emp->name);
        printf("empage :%d",emp->age);
        return 0;
}

如何纠正这个程序?

3 个答案:

答案 0 :(得分:9)

您没有为emp分配内存。在使用emp之前,请尝试

emp = malloc(sizeof(*emp));

答案 1 :(得分:1)

如果你测试你的代码放入汇编-Wall,终端会告诉你&#39; emp&#39;是未初始化的,因此你必须以动态的方式分配&#39; emp&#39; (malloc等等)。

int len_struct = sizeof(*emp);
emp = malloc(len_struct);

PS :这是我的建议:我更喜欢在全局内存中创建一个结构(在 Data 中)因为我认为这个结构你将来会用在prg中。

答案 2 :(得分:0)

您无需使用指向structprintf的指针。

#include<stdio.h>
int main()
{
    puts("empname :Kumar");
    puts("empage :30");
    return 0;
}