Grundwerte bei der Alocierung von Speicher?
-
Hallo,
ich habe mal eine generelle Frage zum alocieren von Speicher. Wenn ich Speicher alociere, welche Werte stehen in diesem neu erzeugten Speicherblock? Kann man davon ausgehen, dass dieser Speicherblock erstmal grundsätzlich mit Nullen belegt ist?
Bsp.:
m = 12; n = 12; RC = (double *) malloc (m*n*sizeof(double)); RC[0] = (XR-XL)/LX; RC[39] = RC[0]; RC[78] = RC[0]; RC[117] = RC[0]; RC[1] = (YR-YL)/LX; RC[40] = RC[1]; RC[79] = RC[1]; RC[118] = RC[1]; RC[2] = (ZR-ZL)/LX; RC[41] = RC[2]; RC[80] = RC[2]; RC[119] = RC[2];
Sind alle nicht belegten jetz automatisch gleich Null? Wenn ich versuche alle Speichblöcke durch eine for-Schleife mit Null zu belegen, compiliert mein Programm erfolgreich, steigt aber bei der Anwendung aus. Lasse ich die Nullzuweisung weg, funktioniert alles und an den nicht belegten Stellen im Speicher stehen Nullen. Ist das Zufall.
-
calloc initialisiert den Speicher vorher mit Nullen, malloc nicht. Wenn dein Programm beim initialisieren mit 0 abstürzt, hast du irgendwas falsch gemacht.