Qt 对象的生命周期是多少?
如:
QTcpSocket *socket=new QTcpSocket();
socket什么时候会被销毁?我应该使用
delete socket;
有什么区别:
QTcpSocket socket;
我找不到有关此的深入信息,欢迎任何评论或链接。
Qt 对象的生命周期是多少?
如:
QTcpSocket *socket=new QTcpSocket();
socket什么时候会被销毁?我应该使用
delete socket;
有什么区别:
QTcpSocket socket;
我找不到有关此的深入信息,欢迎任何评论或链接。
Qt 使用父子关系来管理内存。如果您在QTcpSocket
创建对象时为其提供了父对象,则父对象将负责清理它。例如,父级可以是使用套接字的 GUI 窗口。一旦窗口死亡(即关闭),套接字就会死亡。
您可以不使用父对象,但实际上您必须delete
手动处理对象。
我个人建议坚持使用惯用的 Qt 并使用将所有对象链接到父子树。
分配的对象new
必须用 释放delete
。
但是,使用 Qt,大多数对象都可以有一个父对象,您可以将其指定为构造函数的参数。当父对象被删除时,子对象被自动删除。
如果您出于某种原因不想传递父级(因为没有 QObject 拥有套接字对象是有意义的),您还可以使用 QSharedPointer 来管理生命周期。