Frage zur internen Vector Funktion



  • Hallo, ich habe gerade überlegt wie den wohl der Vector Datentyp intern funktioniert.

    Woher weiss der Vector wann ich den Speicher nicht mehr brauche?
    Ein Vector macht die "Garbage collection" doch von selbst oder?

    Beim mir wird hier ja der Speicher erst zum Ende wieder freigeben.

    #include <iostream>
    using namespace std;
    
    class memory
    {
        public:
    
        void res ( int value, int pos, int elem );
        int *elements;
    
        memory(){};
    
        ~memory(){
            cout<<"ende";
            delete [] elements;
        }
    
    };
    
    void memory :: res ( int value, int pos, int elem )
    {
        elements      = new int [elem];
        elements[pos] = value;
    }
    
    int main()
    {
    int a;
    
    memory mem;
    mem.res(3,0,20);
    
    cout<<"eingabe: ";
    cin>>a;
    
        if(a==123)
        {
            cout<<"123";
        }
    
    system("PAUSE");
    return 0;
    }
    

  • Mod

    Das macht vector nicht großartig anders, bloß, im Gegensatz zu deinem Code, ohne Speicherlöcher. Wenn dich Details interessieren ,gibt es auch viele freie Implementierungen von vector die du dir ansehen kannst, zum Beispiel die STL des GCC. Ist aber teilweise recht schwer lesbar.



  • MemorYvec schrieb:

    Woher weiss der Vector wann ich den Speicher nicht mehr brauche?
    Beim mir wird hier ja der Speicher erst zum Ende wieder freigeben.

    Wenn der Vector den Scope verlässt, und sein Destruktor aufgerufen wird. Ebenso wie dein Beispiel (Das aber u.a. die Regel der Drei verletzt).


Anmelden zum Antworten