上下文
这是我的密码
typedef struct {
int m;
int (*v)(int *restrict a);
} polo;
int toto(int *restrict a){
printf("hello %d\n",*a);
}
int main()
{
polo *kilo;
kilo->m = 84;
kilo->v = toto;
kilo->v(&kilo->m);
return 0;
}问题
分段故障。我不明白为什么。如果基洛不再是指针,则相同的代码可以工作。(马球公斤;kilo.m=.)
你能解释一下吗?
谢谢
发布于 2014-07-28 09:37:45
您需要为kilo预留空间
polo *kilo = malloc(sizeof(*kilo));
或
polo *kilo = malloc(sizeof(polo));
别忘了在最后给free(kilo);打电话。
发布于 2014-07-28 09:41:09
在使用指针之前,应该分配内存。
你可以这样做:
polo *kilo = malloc(sizeof(polo));或
polo temp;
polo *kilo = &temp;剩下的代码就可以正常工作了。
发布于 2014-07-28 09:47:24
您需要为指针kilo分配内存。
int main()
{
polo *kilo;
kilo = malloc(sizfof(polo));
kilo->m = 84;
kilo->v = toto;
kilo->v(&kilo->m);
free(kilo);
return 0;
}如果没有为结构指针分配内存,就无法将值存储在结构成员中。
但是当您声明polo kilo;时,它不需要内存分配。因为您被声明为一个结构变量。当您声明结构变量时,为其分配的内存os是静态的。所以它会成功的!
https://stackoverflow.com/questions/24992367
复制相似问题