sagen wir ich möchte drei zeichen in temp1 schreiben und sonst soll nichts drin sein (ich will anschliessend mit XOR einen vergleich mit einem anderen string machen)
der zugehörige code sieht folgendermassen aus:
Code:
int i; char *temp1 = NULL;
...
/* sei hier int i gesetzt zb auf 3 */
temp1 = (char *)realloc(temp1, sizeof(char) * i);
mein debugger gibt mir für temp1 jedoch folgenden wert:
Code:
temp1 = 0x132378 "\01««««««««îþîþîþîþîþîþîþ"
schreibe ich nun meine drei zeichen (zb 'bla') in temp1 sieht es so aus:
Code:
temp1 = 0x132378 "bla«««««««îþîþîþîþîþîþîþ"
ich frage mich nun wie realloc dazu kommt 24 zeichen zu reservieren...
ich denke einfach mal das du den string nicht nullterminiert hast und deshalb liesst der debugger solang im speicher rum bis er ein 0x00 findet -- class God : public ChuckNorris { };
wenn nämlich mal realloc null zurückgibt, würdest du ein speicherleck erzeugen bzw den fehler gar nicht abfangen -- class God : public ChuckNorris { };
In diesem Fall braucht er orig = temp; gar nicht zu machen, weil er realloc wie malloc benutzt (da tmp1==NULL). Aber auf tmp==NULL soll man trotzdem überprüfen. -- A! Elbereth Gilthoniel! silivren penna míriel o menel aglar elenath, Gilthoniel, A! Elbereth!