Verständnisproblem malloc()
-
Angenommen ich habe folgenden Code:
int i = 3; char* Erg; Erg = (char*)malloc(i * sizeof(char)); for(int a=0; a < i; a++) { Erg[a] = '1'; printf("%s\n", Erg); }Wieso ist die Grösse (strlen) von Erg immer um 4 Grösser als i?
Ich krieg es irgendwie absolut nicht hin, dass Erg immer genau i Stellen gross ist, egal was ich bei malloc hinschreibe. Auch wenn ich es mit new mache bekomm ich es nicht hin!
Beim googlen ist mir aufgefallen, dass manche das (char*) vor malloc weglassen, das geht aber irgendwie nicht...bekomme da immer eine Fehlermeldung!
-
a) Das ist C, nicht C++
b) Du musst den C-Style-String mit einem Nullbyte ('\0' abschliessen).Gruß
-
Danke Dir.
-
Hallo,
Beim googlen ist mir aufgefallen, dass manche das (char*) vor malloc weglassen, das geht aber irgendwie nicht...bekomme da immer eine Fehlermeldung!
Wenn du es mit einem C-Compiler kompilierst, kannst du den Cast weglassen, C++ erfordert ihn, aber in C++ solltest du sowieso new und delete verwenden.
Mfg
GPC