对不起,如果我冒犯了任何人,但我这周开始学习 C,并且在编译时遇到了段错误。我可以请第二双眼睛来帮助我解决这个错误吗?
void Space(void *empty, size_p s)
{
empty = malloc(s);
}
int main()
{
int *p = NULL;
Space(p, sizeof(p));
*p = 7;
return;
}
最佳答案
empty
只是一个指针变量 - 它包含“一些”地址,但在 Space
的上下文中它仍然是一个局部变量。如果你想更新 Space
中 int *p
的值,你需要传递一个指向它的指针:
int main()
{
int *p = NULL;
Space(&p, sizeof *p);
*p = 7;
return;
}
void Space(void **empty, size_p s)
{
*empty = malloc(s);
}
此外,您在调用 Space
时遇到了一个错误:Space(p, sizeof(p));
sizeof(p)
是 int *
变量的大小,但您想分配 int
的大小,因为这就是您'存储在 p
中。所以那一行应该是:
空格(&p, sizeof *p);
关于c - malloc 和 sizeof 时的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54964275/