008
29.10.2004, 21:41 Uhr
(un)wissender
Niveauwart
|
Ok, nicht schlecht, zwei Fehler sind drin.
C++: |
int main() { char **array; int x = 3; int y = 4; int z = 0;
array = malloc(x * sizeof(char*)); //Korrekt, 3 mal einen Pointer speichern
while(z < x) //Jeden String initialisieren (3 mal), also < nicht <=, da sonst 4 {0,1,2,3} { array [z] = malloc(y * sizeof(char)); //sizeof(char*) ist nicht korrekt, //denn wir wollen ja einen String mit 4 zeichen, a //also 4 * sizeof(char) z++; } }
|
Jetzt gibt das ganze mal wieder frei.
Bearbeitung: |
Das mit dem <= ist so ein typischer Fall, wo du Speicher benutzt, der dir nicht gehört. sizeof(char*) ist auch 4 (zumindest meistens auf 32 Bit-Systemen), ich weiß, aber es geht ums Prinzip, ich hätte ja auch eine Länge von 5 verlangen können, dann wäre es tatsächlich nicht mehr korrekt.
|
-- Wer früher stirbt ist länger tot. Dieser Post wurde am 29.10.2004 um 21:46 Uhr von (un)wissender editiert. |