Hier ist die Essenz dessen, was ich zu tun versucht:Warum reserviert malloc() bei Verwendung eines Zeigers auf `double` nicht die richtige Speichergröße?
double *E; //Array of doubles
int N; //The eventual size of the array, typically >1
// some code where variable N gets assigned
//inside of some function
E = malloc(sizeof(double)*N);
printf("size of E = %lu\n",sizeof(E)/sizeof(E[0])); //checking size of array E
Der Ausgang dieses Codes ist „Größe von E = 1“, unabhängig vom tatsächlichen Wert von N. Warum die malloc tut() Funktion nicht die richtige Größe im Speicher zuordnen?
Ich weiß, das scheint sehr rudimentär, aber ich kann nicht verstehen, warum das nicht funktionieren würde.
Jeder Einblick würde sehr geschätzt werden.
'sizeof (E)' ist die Größe des Zeigers. Du kennst die Größe des Arrays bereits, weil du gerade 'malloc' gesagt hast, wie du Speicher willst,' N'. Wenn 'E == NULL', dann ist die Größe '0'. Dies ist eine häufig gestellte Frage. –
In einem verwandten Hinweis sollten Sie immer "Calloc" für diese Art von Fällen verwenden. –
@ Rhymoid für was "Art von Fall"? Willst du sagen, Malloc sollte nicht benutzt werden? –