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



    1. mit malloc reservierter speicher wid am heap reserviert.
    2. 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.

Anmelden zum Antworten