speicher frage



  • habe eine funktion geschrieben die x byte arbeitspeicher benötigt:

    void foo(void) {
      char xxx[x];
      ...
    }
    

    wenn ich nun im int maid() die funktion aufrufe wird der speicher dannach wieder frei gegeben? wenn nicht wie kann ich ihn freimachen?



  • Der Speicher wird automatisch wieder freigegeben.
    Bei dynamischem Speicher a la malloc() jedoch nicht, dieser wird mit free() freigegeben.



  • ähm ich würde nicht sagen, dass der speicher freigegeben wird hab eine testfunktion geschrieben:

    int* testfkt(){
        int *ret;
        int arr[1];
        arr[0]=3;
        ret=arr;
    
        return ret;
    
    }
    
    int main(){
    int *ausgabe;
    ausgabe=testftk();
    printf("%d",ausgabe[0]);
    
    return 0;
    }
    

    liefert als ergebnis 3.



  • das kannst du so einfach nicht beantworten ja es kann sein das das zeug noch im speicher abhängt da nicht festgelegt ist das es überschrieben werden muß, aber es ist nicht garantiert das es da für immer stehen bleibt das heißt eine andere function oder dein prog kann diesen speicher bereich verwenden wann es will und dann steht da nichts mehr...

    lg lolo



  • curry-king schrieb:

    Bei dynamischem Speicher a la malloc() jedoch nicht, dieser wird mit free() freigegeben.

    wobei sich die frage stellt, das von beidem 'dynamischer' ist. *fg*

    CP_ro schrieb:

    ...
    liefert als ergebnis 3.

    eine 3 als pointer? na, das zeigt doch fast, dass das was nicht stimmen kann.
    🙂


Anmelden zum Antworten