当编译下面的程序时,终端给我下面的消息 “double free or corruption(out)”。我想创建一个程序,首先计算数组中所有元素的总和,参见下面的x。然后我想要 计算指针指向的内存块中所有数字的总和,请参阅下面的y。我认为问题在于赋值“y = x;”计算内存块中所有数字的总和以及数组中所有元素的总和
int main(void)
{
double x[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
printf("The sum is %f\n", sum(x, 10));
double *y = malloc(sizeof(double)*10);
y = x;
printf("The sum is %f\n", sum(y, 10));
free(y);
return 0;
}
指针'y'永远不会被'malloc'分配(因为您立即覆盖并丢失'malloc'的返回值)。 –
你不能在C中分配数组,你可以为它们分配内存,然后使用'memcpy'复制值。你现在有一个漏洞:你正在分配'10 * sizeof * y'(除非'malloc'返回'NULL'),然后重新赋值'y'指向'x' –