查看完整版本: [-- 求助关于std::bad_alloc问题 --]

QTCN开发网 -> Qt基础编程 -> 求助关于std::bad_alloc问题 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

驴肉火烧 2016-12-23 15:54

求助关于std::bad_alloc问题

terminate called after throwing an instance of 'std::bad_alloc'  what():  std::bad_alloc
[attachment=16263]    [attachment=16264]

这是在使用QUdpSocket进行大量数据传输时,运行大概三十分钟后出现的错误。求助大神们原因。
QUdpSocket是在主窗口类的构造函数中new的,然后连接信号readyRead(),和读取数据的槽函数。在槽函数中一直用m_pUdpSocket->hasPendingDatagrams()来监听和读取数据。但是过一段时间会出现监听不到数据,不知为什么,然后解决办法是加了一个定时器,每当监听不到数据时m_pUdpSocket->bytesAvailable()!=0,,就重新new QUdpSocket,重新connnect的。在new之前m_pUdpSocket->close();代码大概就是这样写的。请问为什么会报内存异常的错误。
[attachment=16262]

bran_lee 2016-12-23 16:54
你在new之前有没有释放掉之前的资源呢?会不会有内存泄露呢?


驴肉火烧 2016-12-23 18:11
terminate called after throwing an instance of 'std::bad_alloc'  what():  std::bad_alloc
[attachment=16263]    [attachment=16264]

这是在使用QUdpSocket进行大量数据传输时,运行大概三十分钟后出现的错误。求助大神们原因。
QUdpSocket是在主窗口类的构造函数中new的,然后连接信号readyRead(),和读取数据的槽函数。在槽函数中一直用m_pUdpSocket->hasPendingDatagrams()来监听和读取数据。但是过一段时间会出现监听不到数据,不知为什么,然后解决办法是加了一个定时器,每当监听不到数据时m_pUdpSocket->bytesAvailable()!=0,,就重新new QUdpSocket,重新connnect的。在new之前m_pUdpSocket->close();代码大概就是这样写的。请问为什么会报内存异常的错误。
[attachment=16262]
[attachment=16265]

驴肉火烧 2016-12-23 18:12
bran_lee:你在new之前有没有释放掉之前的资源呢?会不会有内存泄露呢?
 (2016-12-23 16:54) 

释放资源了,,m_pUdpSocket->deleteLater();

bran_lee 2016-12-24 09:09
驴肉火烧:释放资源了,,m_pUdpSocket->deleteLater(); (2016-12-23 18:12) 

m_pUdpSocket->bytesAvailable()!=0不是代表有数据吗

驴肉火烧 2016-12-27 21:41
bran_lee:m_pUdpSocket->bytesAvailable()!=0不是代表有数据吗 (2016-12-24 09:09) 

不是,==0,代表有数据传来。

bran_lee 2016-12-28 13:58
驴肉火烧:
不是,==0,代表有数据传来。

你在逗我?从名字看就知道!=0时有数据,文档也说明了表示的是可读数据的大小。


查看完整版本: [-- 求助关于std::bad_alloc问题 --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled