【发布时间】:2012-12-16 09:32:40
【问题描述】:
我正在尝试通过将bytesWritten 连接到我的函数sendNextBlock,以非阻塞方式传输一个大文件。
void AsynchronousRetrieveCommand::start()
{
connect(socket(), SIGNAL(bytesWritten(qint64)), this, SLOT(sendNextBlock()));
sendNextBlock();
}
void AsynchronousRetrieveCommand::sendNextBlock()
{
socket->write(file->read(64*1024));
}
我在 Symbian 手机上运行此代码,在传输了 5-6 兆字节后,我在手机中收到“内存已满”消息框,并且在调试输出中显示此消息:
[Qt Message] CActiveScheduler::RunIfReady() returned error: -4
我认为这是某种内存泄漏,但在我的代码中看不到是什么原因造成的。
【问题讨论】:
-
您发送的文件有多大?
-
大约 500 MB,但仅传输了 5 MB 后发生错误。不过反正应该没关系,因为我是逐块发送的,每个块只有64k。
标签: c++ qt memory-leaks qtcpsocket