基于我在这里学到的内容: 在C语言中通过函数操作动态数组.
void test(int data[])
{
data[0] = 1;
}
int main(void)
{
int *data = malloc(4 * sizeof *data);
test(data);
return 0;
}
这个可以正常工作。但是,我也尝试在一个函数中使用 realloc
。
void increase(int data[])
{
data = realloc(data, 5 * sizeof *data);
}
这样做是符合要求的,但程序在运行时崩溃了。
问题
在函数中应该如何使用realloc?
我知道应该将realloc
的结果赋值给一个变量并先检查它是否为NULL
。这只是一个简化的示例。
malloc()
的返回值进行强制转换并且你还正确地使用了sizeof()
操作符……太棒了!+1。 - user529758char *p = (char *)malloc(len * sizeof(char);
这样的混乱代码,至少有3个地方是错误的(练习:找出哪里错了)。 - user529758sizeof(char)
始终为1,它只是杂乱无章并降低可读性,第三个:如果您使用sizeof()
,您应该真正使用sizeof(*variable)
而不是sizeof(type)
,因为后者在更改*p
的类型时会出问题。 - user529758realloc
... - Antti Haapala -- Слава Україні