當編譯下面的程序時,終端給我下面的消息 「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' –