Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Memory Leaks?

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
07.05.2006, 19:24 Uhr
Karldin Shinowa
Professional Noob


Das Beispiel stammt aus qt aber es geht um konstruktor, dynamisxche speicheranlegung und destruktor
Die Klasse ist:

C++:
class MyWidget:public QWidget
{
   public:
      MyWidget(QWidget*parent=0)
         :QWidget(parent)
    {
       QPushButton *quit = new QPushButton(tr("Quit"));
           //...
       QGridLayout*grid=new QGridLayout;
        //...
            QVBoxLayout *layout = new QVBoxLayout;
            //...
    }
};


diese 3 Objekte werden im konstruktor dynamisch erzeugt. es gibt aber keine deletes am ende. entstehen da keine speicher leaks?
--
Ich will die Welt verbessern, doch Gott gibt mir nicht den Code.

Dieser Post wurde am 07.05.2006 um 19:25 Uhr von Karldin Shinowa editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
07.05.2006, 19:54 Uhr
kronos
Quotenfisch
(Operator)


...im Destruktor?
--
main($)??<-$<='?'>>2?main($-!!putchar(
(("$;99M?GD??(??/x0d??/a:???;a"+'?'/4)
??($??)+'?'/3-2-1+$%2)??''?')):'?';??>
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
07.05.2006, 20:32 Uhr
Spacelord
Hoffnungsloser Fall


Ne,
in Qt läuft das anders.Da kümmert sich das ParentWidget automatisch darum dass die Child Elemente gelöscht werden.
Das hat so schon seine Richtigkeit.
Schau dir z.B. mal die Methode children an.Die liefert dir nen Zeiger auf ne Liste in der die Kindelemente des Fensters verwaltet werden.

Gruss Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
07.05.2006, 21:03 Uhr
ao

(Operator)



Zitat von Spacelord:
Da kümmert sich das ParentWidget automatisch darum dass die Child Elemente gelöscht werden.

Echt? Woher weiß denn der Vater, wer seine Kinder sind? Die müssen doch noch irgendwie angemeldet werden ...

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
07.05.2006, 21:48 Uhr
FloSoft
Medialer Over-Flow
(Administrator)



Zitat:

Zitat von Spacelord:
Da kümmert sich das ParentWidget automatisch darum dass die Child Elemente gelöscht werden.

Echt? Woher weiß denn der Vater, wer seine Kinder sind? Die müssen doch noch irgendwie angemeldet werden ...

ao

Evtl durch nen Schwangerschaftstest *scnr*
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
07.05.2006, 22:08 Uhr
Spacelord
Hoffnungsloser Fall


Zumindest bei Qt 3.3(und damit arbeite ich) musste man dem Konstruktor noch nen Pointer auf das ParentWidget mitgeben.
Wie das jetzt bei 4.x aussieht......keine Ahnung .


Zitat von C++ GUI Programming
with Qt 3 :

Qt’s parent–child mechanism is implemented in QObject, the base class of both
QWidget and QLayout.When we create an object (a widget, layout, or other kind)
with a parent, the parent adds the object to the list of its children. When the
parent is deleted, it walks through its list of children and deletes each child.
The children themselves then delete all of their children,and so on recursively
until none remain.
The parent–child mechanism simplifies memory management a lot, reducing
the risk of memory leaks.



http://phptr.com/content/images/0131240722/downloads/blanchette_book.pdf

Gruss Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
07.05.2006, 23:16 Uhr
Spacelord
Hoffnungsloser Fall


@ao:
In dem Code weiter oben fehlen übrigens einige Zeilen Code.
Ich denke mal dass da noch addWidget und setLayout aufgerufen werden wodurch die Parent-Child Beziehung auch hergestellt wird.

Gruss Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
08.05.2006, 08:47 Uhr
ao

(Operator)



Zitat von Spacelord:
... musste man dem Konstruktor noch nen Pointer auf das ParentWidget mitgeben.

Ah ja, damit ergibts Sinn.

Zitat:
... dass da noch addWidget und setLayout aufgerufen werden ...

Damit auch.

Gruß,
ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: