Here, my signal declaration:
signals:
void mySignal(MyClass *);
And how I’m using it:
MyClass *myObject=new myClass();
emit mySignal(myObject);
Here comes my problem: Who is responsible for deletion of myObject:
-
Sender code, what if it deletes before myObject is used? Dangling Pointer
-
The slot connected to signal, what if there is no slot or more than one slot which is connected to the signal? Memory Leak or Dangling Pointer
How does Qt manage this situation in its build-in signals? Does it use internal reference counting?
What are your best practices?
You can connect a signal with as many slots as you want so you should make sure that none of those slots are able to do something you would not want them to do with your object:
constreference then, depending on your connection type, QT will pass the value of the object for you (see this for some details)See also this question for some thoughts about passing pointers in signals.