Beim Kompilieren des Programms unten gibt das Terminal mir die folgende Nachricht "doppelt frei oder Korruption (out)". Ich möchte ein Programm erstellen, das zuerst die Summe aller Elemente in einem Array berechnet, siehe x unten. Dann möchte ich die Summe aller Zahlen in einem Speicherblock berechnen, auf den ein Zeiger zeigt, siehe y unten. Ich glaube, dass das Problem in der Zuweisung "y = x;" liegt.Berechnen Sie die Summe aller Zahlen in einem Speicherblock und die Summe aller Elemente in einem Array
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;
}
Der Zeiger 'y' wurde niemals von' malloc' zugewiesen (weil Sie sofort den Rückgabewert von 'malloc' überschreiben und verlieren). –
Sie können keine Arrays in C zuweisen, Sie können ihnen Speicher zuweisen und dann die Werte mit 'memcpy' kopieren. Was Sie jetzt haben, ist ein Leck: Sie ordnen '10 * sizeof * y' zu (es sei denn' malloc' gibt 'NULL' zurück) und weisen dann' y' neu zu, um auf 'x' zu zeigen –