And to avoid memory leak just give to the Widget the parent. And when parent will die he will delete your Widget. It's just as example...

But to answer to your question more clearly we need to know some more details. Such as what widget is doing, when he should die, and so on...

On 12.06.2015 16:57, Dmitry Volosnykh wrote:
In your case the 'temp' object will be deleted upon quitting function foo(), so the signalTriggered() is never emitted. In previous version, it would have been living longer because of memory leak you mentioned.

On Fri, Jun 12, 2015 at 4:52 PM, Berkay Elbir <berkayel...@gmail.com <mailto:berkayel...@gmail.com>> wrote:


    Hello all;

    We recently joined a new project, which is full with idiom like: ,

    |void  foo()
    {
Widget* temp= new Widget; connect(temp, &Widget::signalTriggerred,[this, temp]()
         {
              do  cool staff...
         }
    }|

    As you can see no delete nothing, I am afraid even user class
    "Widget" is inherited QObject, this is still a leak. Does QT do
    something fancy to prevent leek in case above?

    What I am planning to do:

    |void  foo
    {
          std::shared_ptr<Widget  >  temp(  new  Widget  ()  );
          connect(temp.get(),  &Widget::signalTriggerred,[this,  temp]  ()
          {
               do  even cooler things...
          }
    }|

    Is there a problem with my apporach? (For example I didn't want to
    use .get() but compiler errors forced me to use it).

    Thanks in advance,

    BE




    _______________________________________________
    Interest mailing list
    Interest@qt-project.org <mailto:Interest@qt-project.org>
    http://lists.qt-project.org/mailman/listinfo/interest




_______________________________________________
Interest mailing list
Interest@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest

_______________________________________________
Interest mailing list
Interest@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest

Reply via email to