When a QTcpSocket
(or QSslSocket
)升级为QWebSocket
,前者必须存储以供将来使用,因为它需要......
- 无论何处都移动到同一个线程
QWebSocket
正在moveToThread()
-
deleteLater()
每当QWebSocket
正在被摧毁
未能做到1.导致未定义的行为并且很可能导致崩溃。虽然没能做到2.导致内存泄漏,如果您有QWebSocketServer
(QWebSocketServer - 不释放内存 https://stackoverflow.com/questions/37296785/qwebsocketserver-not-releasing-memory).
我以艰难的方式学到了这些,因为它没有很好的记录。 :-)
最近为我们进行了代码重构QWebSocketServer
建筑学。因此,我看到了一种奇怪的行为。 --> 每当远程客户端出现错误时,即QWebSocket::error()
信号,底层QTcpSocket
发射与destroy()
由外部事物发出信号并可能被删除。
可能存在一些编码不匹配的可能性,这会导致这种情况,但在我看来,这种可能性较小。所以在不深入代码细节的情况下,我想问......
Question: 在这样的背景下QWebSocket
, 是基础QTcpSocket
在某些情况下被Qt框架破坏?
当 Web 套接字发生错误或断开连接时,底层套接字将被 Qt 框架销毁。
由于Qt管理底层的内存QTcpSocket
,假设在2.是错的。
我发现存在编码错误,我没有有效地执行deleteLater()
在早期的代码中。这给我的印象是我们必须管理底层QTcpSocket
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)