Kleine Frage zu Speicherreservierung
-
Nabend
So hab mal ne frage:
Aslo wenn ich in einer Funktion
das ausführe (Also Speicher reserviere)
char *pszText = (char*)malloc(260);oder wenn ich so etwas in der Funktion habe, da reserviere ich und geb den string mit return zurück:
char* BuildParam(char *szOBName, char *szOBValue) { char *szTmp; // Objekt-Name muss in Großbuchstaben sein szTmp = (char*)malloc(strlen(szOBName)+strlen(szOBValue)+5); sprintf(szTmp, "%s=\"%s\"", szOBName, szOBValue); return szTmp; }
Wo wird der Speicher dann angefordert ? im Heap oder im Stack ?
Muss ich den reservierten Speicher wieder freigeben oder passiert das automatisch sobald die Funktion zu ende ist ?Danke des währs hehe
Christian
-
Dieser Thread wurde von Moderator/in Jansen aus dem Forum Borland C++ Builder (VCL/CLX) in das Forum ANSI C verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
im Heap! Egal in welcher Funktion du den Speicher anforderst (main ist ja auch nur 'ne Funktion...), du musst nur dafür sorgen, ihn auch irgendwann wieder freizugeben (free).
-
- mit malloc reservierter speicher wid am heap reserviert.
- du musst den speicher natürlich wieder freigeben. würde der speicher nach ende der funktion automatisch freigegeben dann wäre der zurückgegebene pointer in der aufrufenden funktion ungültig.
K.