gpt4 book ai didi

c++ - QTcpSocket内存泄漏

转载 作者:行者123 更新时间:2023-11-30 02:52:12 25 4
gpt4 key购买 nike

我有一个使用 QTcpServer 和 QTcpSockets 的客户端-服务器应用程序设置,似乎有一些巨大的内存泄漏。我想知道问题是否出在我使用 Qt 的套接字上,因为我刚刚设置了一个简单的测试应用程序,并且在一个循环中发送 250,000,000 条消息后,我的客户端上升到 75 兆。似乎如果我有几百万条消息,我会看到我的客户端使用了 300+ MB 的内存。

这对我来说似乎不对,因为我一直在发送消息,内存一直在上升!

鉴于连接套接字上的以下代码,我是否应该期望我的应用程序内存不断增加。如果此套接字保持打开状态,我将很快耗尽内存。我错过了什么吗?

if (socket && socket->isOpen())
{
for(int i = 0; i < 25000000; ++i) {
QString str = "test";
socket->write(str.toStdString().c_str());
}
}

最佳答案

这是预料之中的,因为您可能会缓冲大量数据。由于 Qt 事件循环,这是一个异步 API,因此您应该在程序准备好时等待写入。

您可以使用 void QIODevice::bytesWritten(qint64 bytes) [signal] 信号继续写入。如果您以这种方式使用异步 API,您将避免大量内存消耗。

关于c++ - QTcpSocket内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19164770/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com