Speicherverwaltung

Alles rund um die Programmierung mit Qt
Antworten
lowlevel
Beiträge: 4
Registriert: 13. August 2010 12:20

Speicherverwaltung

Beitrag von lowlevel »

Hallo zusammen,

ich habe folgende for-Schleife:

Code: Alles auswählen

QArtikel* Artikel;

for(int i=0; i < Query->size(); i++)
        {
            Artikel = new QArtikel(Query->value(0).toString(), "Dicom-Nr");
            Artikel->LoadFromDB();
            Query->next();
            delete(Artikel);
        }
Nun besteht folgendes Problem. Die Schleife wird so einige 1000 Mal durchlaufen. Dabei wächst der Speicherbedarf des Prozesses immer weiter an. Bei 10000 Durchläufen etwa 10MByte. Ich habe die Klasse QArtikel bereits untersucht. Interessant ist folgendes. Wenn ich debugge fällt auf, dass der Speicherbedarf beim Ausführen der Funktion LoadFromDB() zunimmt. Springe ich beim Debuggen in die Funktion LoadFromDB() rein und "suche" die Fehlerstelle, dann nimmt der Speicherbedarf nicht zu. Das Debuggen behebt also im Prinzip das Problem. Hat irgendjemand eine Idee, wo hier Speicher verloren geht. Habe schon daran gedacht, dass hier irgendwas gethreaded wird aber laut Task-Manager geschieht nichts.

Danke für eure Hilfe.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Viel zu wenig Code um auch nur einen Ansatz zu haben. Minimal kompilierbares Beispiel wäre schon interessant...
Und unter Linux -> valgrind benutzen.
Abgesehen davon - warum Artikel erst mit new erzeugen nur um es zwei Zeilen später wieder zu zerstören? Da würde auch ein Objekt auf dem Stack reichen...
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Antworten