• 5486阅读
  • 6回复

求助关于std::bad_alloc问题 [复制链接]

上一主题 下一主题
离线驴肉火烧
 

只看楼主 倒序阅读 楼主  发表于: 2016-12-23
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();代码大概就是这样写的。请问为什么会报内存异常的错误。
离线bran_lee

只看该作者 1楼 发表于: 2016-12-23
你在new之前有没有释放掉之前的资源呢?会不会有内存泄露呢?

当你只有锤子时,你看什么都像是钉子!
离线驴肉火烧

只看该作者 2楼 发表于: 2016-12-23
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]

离线驴肉火烧

只看该作者 3楼 发表于: 2016-12-23
回 bran_lee 的帖子
bran_lee:你在new之前有没有释放掉之前的资源呢?会不会有内存泄露呢?
 (2016-12-23 16:54) 

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

只看该作者 4楼 发表于: 2016-12-24
回 驴肉火烧 的帖子
驴肉火烧:释放资源了,,m_pUdpSocket->deleteLater(); (2016-12-23 18:12) 

m_pUdpSocket->bytesAvailable()!=0不是代表有数据吗
当你只有锤子时,你看什么都像是钉子!
离线驴肉火烧

只看该作者 5楼 发表于: 2016-12-27
回 bran_lee 的帖子
bran_lee:m_pUdpSocket->bytesAvailable()!=0不是代表有数据吗 (2016-12-24 09:09) 

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

只看该作者 6楼 发表于: 2016-12-28
回 驴肉火烧 的帖子
驴肉火烧:
不是,==0,代表有数据传来。

你在逗我?从名字看就知道!=0时有数据,文档也说明了表示的是可读数据的大小。
当你只有锤子时,你看什么都像是钉子!
快速回复
限100 字节
 
上一个 下一个