Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » newbie problem: realloc

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
27.07.2005, 18:55 Uhr
tabin



hi forum

ich habe ein problem mit der function realloc

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...

danke schonmal für evt hilfe!

--tabin--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
27.07.2005, 19:00 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


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 { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
27.07.2005, 19:07 Uhr
tabin



hehe jo - danke!

--tabin--

ps - sag ich doch newbie frage!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
27.07.2005, 22:25 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


ansonsten sollte man realloc evtl so benutzen:


C++:

char *orig = ...;

char *temp = realloc(orig, newsize);
if(temp)
  orig = temp;
else
{
  // fehler, nicht genug speicher?
}



wenn nämlich mal realloc null zurückgibt, würdest du ein speicherleck erzeugen bzw den fehler gar nicht abfangen
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
27.07.2005, 23:06 Uhr
Pablo
Supertux
(Operator)


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!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: