Queue mit struct Elementen / Speicherbelegung



  • Hallo,

    ich wollte eigentlich fragen, ob mit pq.pop(); auch der Speicher wieder frei wird?

    #include <queue>
    
    struct Pixel
    {
      int x;
      int y;
    
      Pixel(int x, int y)
      : x(x), y(y){}
    };
    
    int main()
    {
      std::priority_queue<Pixel> pq;
      pq.push(Pixel(1,2));
      ......
      pq.pop();
    }
    

    also wird der Speicherplatz, den die Struktur belegt wieder frei, nachdem pq.pop() aufgerufen wurde, oder bleibt er belegt durch die Struktur und kann nicht benutzt werden? (kenne mich leider mit der Speicherverwaltung nicht aus)

    Mein Problem ist, dass ich mit meiner Priotity Queue 512MB Speicher und 512MB Swap belege (also zuviel), da möchte ich ausschliessen, dass ich Daten im Speicher hab, die ich nicht brauche.

    Gruss und Dank,
    Piioo



  • Solange die priority_queue die Objekte direkt aufnimmt (wie in deinem Beispiel), kannst du dich aus der Speicherverwaltung komplett raushalten: Es wird alles ordnungsgemäß wieder freigegeben! Falls du aber Zeiger auf Objekte in der queue speicherst, dann bist du wieder gefragt, die Zeiger vor dem "poppen" aus der Liste zu löschen!



  • k,

    danke dann muss ich wohl mein Programm weniger Speicher intensiv machen...:/


Anmelden zum Antworten