【发布时间】:2013-08-03 01:17:42
【问题描述】:
我正在尝试将值分配给指向结构的指针的属性,但得到分段错误。
typedef struct {
int id;
char payload[10];
}packet;
void main(){
packet *header;
header->id = 1;
}
它可以编译,但是当我运行它时它给了我一个段错误。它仅在我创建标头时使用“malloc”时才有效。这是为什么?通常我不必为其他指针类型分配内存。
【问题讨论】:
-
请记住,
main()的正确返回类型是int,而不是void,尽管您可以在许多书籍中阅读。此外,以下建议使用malloc()的答案都没有真正麻烦检查malloc()是否成功。当然,在这个计划的范围内,失败是极不可能的。然而,好的做法仍然是好的做法,不检查malloc()最终会咬你一口——可能是当你的程序正在向 CEO 演示或已经发布给数千甚至数百万的客户时,解决问题会产生相应的成本. -
如果您在一本书中看到
void main(),这表明作者不太了解C,您应该找到一本更好的书。 (void main(),或者更好的void main(void),对于嵌入式系统可能是正确的,但如果你正在使用这样的系统,你应该已经知道了。)
标签: c struct segmentation-fault