【发布时间】:2017-10-05 02:20:10
【问题描述】:
我有一个这样的结构
typedef struct Thing{
int att;
} Thing;
Thing *newThing(){
Thing *t;
t = (Thing *)(malloc(sizeof(Thing)));
thing->att = 0;
return t;
}
我有一个 printThing 函数,它尝试像这样打印 att 中的值:
void printThing(Thing *t){
printf("%d", t->att);
}
但是这会导致分段错误,但我可以以相同的方式打印正确的值。我做错了什么?
int main(){
Thing *t1 = readThing();//This works
printf("%d", t1->att); //This also works
printThing(t1); //Segmentation fault
return 0;
}
【问题讨论】:
-
如何为结构分配内存?给出一个最小的完整示例!
-
如果第一个
printf()有效,是的。 -
@gsamaras 编辑显示内存是如何分配的。
-
对于初学者,您应该检查
malloc()是否在newThing()中返回了一个空指针。 -
在
printThing(t1);中使用之前是否声明/定义了printThing()这篇文章仍然缺少一组明确的代码来展示问题 - 只是 sn-ps。
标签: c function pointers struct