关于使用QList出现_BLOCK_TYPE_IS_VALID(pHead->nBlockUse)的问题

ly_118 2016-01-25 09:56:39
平台为 QT5.4+VS2013
我实例一个dialog类,在这个的构造函数中调用fillPortInfo()函数,但是每次程序运行到这个函数时就出现bug,调试结果是:
Debug Assertion Failed!

Program: F:\procedure\LIBS_GUI\LIBS_V3.0\x64\Debug\LIBS_V3.0.exe
File: f:\dd\vctools\crt\crtw32\misc\dbgdel.cpp
Line: 52

Expression: _BLOCK_TYPE_IS_VALID(pHead->nBlockUse)

For information on how your program can cause an assertion
failure, see the Visual C++ documentation on asserts.

这是一个常见的问题,但是我这个函数 完全是从官方example里copy 过来的啊,为什么在VS里面就用不了呢?
而且经过进一步调试 发现是使用QSerialportInfo::available()这个函数的问题,但是问题究竟是什么呢?请各位大神指点下,万分感谢!

#include "settingsdialog.h"

SettingsDialog::SettingsDialog(QWidget *parent)
: QDialog(parent), DialogUi(new Ui::SettingsDialog)
{
DialogUi->setupUi(this);
fillPortsInfo();
}

SettingsDialog::~SettingsDialog()
{
delete DialogUi;
}
void SettingsDialog::fillPortsInfo()
{
DialogUi->serialPortInfoListBox->clear();
static const QString blankString = QObject::tr("N/A");
QString description;
QString manufacturer;
QString serialNumber;
foreach(const QSerialPortInfo &info, QSerialPortInfo::availablePorts()) {
QStringList list;
description = info.description();
manufacturer = info.manufacturer();
serialNumber = info.serialNumber();
list << info.portName()
<< (!description.isEmpty() ? description : blankString)
<< (!manufacturer.isEmpty() ? manufacturer : blankString)
<< (!serialNumber.isEmpty() ? serialNumber : blankString)
<< info.systemLocation()
<< (info.vendorIdentifier() ? QString::number(info.vendorIdentifier(), 16) : blankString)
<< (info.productIdentifier() ? QString::number(info.productIdentifier(), 16) : blankString);

DialogUi->serialPortInfoListBox->addItem(list.first(), list);
}
}
...全文
1024 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_27602103 2019-03-29
  • 打赏
  • 举报
回复
谢谢,我也遇到这个问题。解决了!
wojiaohanliu 2017-08-08
  • 打赏
  • 举报
回复
楼主我又来了,我发现我错误的原因是链接器->输入->附加依赖项中的配置文件加错了,(Debug配置)应该增加 Qt5SerialPortd.lib 文件,(Release配置)应该增加Qt5SerialPort.lib,而我在Debug模式下加入了Qt5SerialPort.lib就出现了_BLOCK_TYPE_IS_VALID(pHead->nBlockUse)的问题,换成Qt5SerialPortd.lib 就好了。
wojiaohanliu 2017-08-07
  • 打赏
  • 举报
回复
遇到了和楼主一样的问题,无法解决

16,203

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧