Ich habe einen Segmentierungsfehler in meinem C-Code gefunden und konnte nach der Suche keine gute Erklärung oder Lösung dafür finden.Dynamisches Array von int-Zeigern verursacht Segmentierungsfehler
Dieser erste Code gibt mir Segmentierungsfehler nach 0.
#include <stdlib.h>
#include <stdio.h>
int main() {
int **defs = malloc(16 * sizeof *defs);
int i;
for (i = 0; i < 16; i++) {
printf("%d\n", i);
*defs[i] = i;
}
free(defs);
return 0;
}
Druck Dieser zweite Code funktioniert gut.
#include <stdlib.h>
#include <stdio.h>
int main() {
int *defs = malloc(16 * sizeof defs);
int i;
for (i = 0; i < 16; i++) {
printf("%d\n", i);
defs[i] = i;
}
free(defs);
return 0;
}
Dies sind nur Beispiele, nicht mein tatsächlicher Code. Ich habe auch versucht, Zeigerarithmetik, aber das gleiche Ergebnis. Könnte jemand bitte das erklären? Vielen Dank.
'* defs [i]'. Bevor Sie das tun, müssen Sie 'defs [i]' initialisieren, um irgendwo zu zeigen. –
Pointer müssen irgendwo zeigen, bevor dereferenziert wird –