题
Qt 对象的生命周期是多少?
例如:
QTcpSocket *socket=new QTcpSocket();
套接字什么时候会被销毁?我应该使用
delete socket;
有什么区别吗:
QTcpSocket socket;
我找不到有关此的深入信息,欢迎任何评论或链接。
解决方案
qt使用父子关系来管理内存。如果您在创建父级时向QTcpSocket
对象提供,则父级将保理清理。父级可以是例如使用套接字的GUI窗口。一旦窗口模具(即关闭)插座模具。
您可以在没有父级的情况下进行,但事实上,您必须手动生成对象。
p>本身我建议坚持惯用Qt,并使用将所有对象链接到父儿童树中。其他提示
分配的对象 new
必须与释放 delete
.
然而,对于 Qt,大多数对象都可以有一个父对象,您可以将其指定为构造函数的参数。当父对象被删除时,子对象也会自动删除。
如果您不想出于某种原因传递父级(因为没有qobject拥有套接字对象的qobject,则可以使用qsharedpointer来管理生命周期。
不隶属于 StackOverflow