首页| 论坛| 消息

标题:求助关于std::bad_alloc问题
作者:驴肉火烧
日期:2016-12-23 15:54
内容:

terminate called after throwing an instance of 'std::bad_alloc'what():std::bad_alloc

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


#1 [bran_lee 12-23 16:54]
你在new之前有没有释放掉之前的资源呢?会不会有内存泄露呢?
#2 [驴肉火烧 12-23 18:11]
terminate called after throwing an instance of 'std::bad_alloc'what():std::bad_alloc

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

 (2016-12-23 16:54) 
释放资源了,,m_pUdpSocket->deleteLater();
#4 回 驴肉火烧 的帖子 [bran_lee 12-24 09:09]
驴肉火烧:释放资源了,,m_pUdpSocket->deleteLater(); (2016-12-23 18:12) 
m_pUdpSocket->bytesAvailable()!=0不是代表有数据吗
#5 回 bran_lee 的帖子 [驴肉火烧 12-27 21:41]
bran_lee:m_pUdpSocket->bytesAvailable()!=0不是代表有数据吗 (2016-12-24 09:09) 
不是,==0,代表有数据传来。

<< 1 2 >> (1/2)

回复 发表
主题 版块