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


Anmelden zum Antworten