terminate called after throwing an instance of ‘stdbad_alloc‘问题原因与解决

这篇具有很好参考价值的文章主要介绍了terminate called after throwing an instance of ‘stdbad_alloc‘问题原因与解决。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

terminate called after throwing an instance of 'std::bad_alloc’问题原因与解决

当做一个QT程序调试如下部分代码时,我想将此处部分代码简化,一开始我是用ui界面读取文件并打印出来,为了查看格式是否正确,所以有了如下代码(可以正常运行).

//--------mainwindow.cpp-----------
//一条一条进行读取
    QByteArray buf=serial->readAll ();
    if(!buf.isEmpty ())
    {
        ui->textEdit->clear ();
        ui->textEdit->moveCursor (QTextCursor::End);
        ui->textEdit->insertPlainText (buf.toHex ());
    }
//获取数据
    QString str=ui->textEdit->toPlainText ();
    qDebug()<<str;

当我不需要从ui界面输出时,我想修改掉此处代码,于是我进行了如下修改:

//--------mainwindow.cpp-----------
//一条一条进行读取
    QByteArray buf=serial->readAll ();
	QString str;
    if(!buf.isEmpty ())
    {
        str.toHex();
    }
	qDebug()<<str;

运行上述代码,会导致出现错误程序不能运行:

terminate called after throwing an instance of ‘std::bad_alloc’

在我搜索了网上出错原因后,我发现此处的原因可能是因为重复声明QString str导致内存不够所造成的,于是我修改代码如下:

//--------mainwiondw.h------------
//声明为全局变量
	QString str;
//--------mainwindow.cpp-----------
//一条一条进行读取
    QByteArray buf=serial->readAll ();
    if(!buf.isEmpty ())
    {
        str.toHex();
    }
	qDebug()<<str;

正常运行,over!

总结:此类报错的原因多为内存不够导致程序异常终止,所以可以检查一下自己声明的某一部分是否导致了内存不够.文章来源地址https://www.toymoban.com/news/detail-507517.html

到了这里,关于terminate called after throwing an instance of ‘stdbad_alloc‘问题原因与解决的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包