malloc - free Speicher geht nicht
-
Hallo,
hab eine Frage zu malloc und free
void Test(char *hdr) { char *ptr = (char *)NULL; ptr = malloc(strlen(hdr)); sprintf(&ptr[0], "%s", hdr); free(ptr); }
Beim free(ptr) tritt immer eine Fehlermeldung auf "Heap Corruption Detected". Was mach ich beim zurückgeben des allokierten Speichers falsch?
gruß
Hans im Glück
-
Versuch mal:
malloc(strlen(hdr)+1);
-
void Test(char *hdr) { char *ptr = malloc(strlen(hdr)[b]+1[/b]); // <-- +1 für die 0 am string-ende sprintf(ptr, "%s", hdr); free(ptr); }
-
vielen dank für die antworten
hier funktioniert es leider immer noch nicht...
char *ptr = (char *)NULL; ptr = (char *)malloc((strlen(hdr) + strlen(param1) + 1)); sprintf(&ptr[0], "%s, %s", hdr, param1); free(ptr);
gruß
Hans im Glück
-
char *ptr = malloc (strlen(hdr) + strlen(param1) + 3);
mach 3 dazu.
einen für die 0, einen für das leerzeichen und einen fürs komma.
-
jetzt hab ich`s gesehen und verstanden...
nochmals vielen dank für die schnelle antwort
Hans
-
Hans im Glück schrieb:
jetzt hab ich`s gesehen und verstanden...
und denk auch du dran: malloc nicht casten. das machen bestimmt ca. 70% aller user hier falsch.
-
ja das stimmt... ein c++ compiler streikt ohne casten denk ich
-
BorisDieKlinge schrieb:
ja das stimmt... ein c++ compiler streikt ohne casten denk ich
tjö, c++ suckt mal wieder gewaltig. genau so 'weak typed' wie C, aber mit 'nem void* kann's nicht richtig umgehen. also denkt auch immer daran: C-programme nicht mit einem C++ compiler übersetzen.