未经处理的异常: 0xc0000374: 堆已损坏

本文描述了一个登陆UI界面在多次点击登陆按钮时出现的异常问题:未经处理的异常0xc0000374堆已损坏。通过将数据库连接设置为静态变量并检查重复创建,避免了同时建立多个数据库连接,从而解决了问题。同时,文章还提到了在Qt项目设置中勾选SQL选项可以避免类似异常。

问题描述
点击登陆按钮时,会创建一个登陆对象(该对象是一个登陆UI界面,包含一个db数据库连接和查询),关闭该登陆UI界面后,再次点击登陆,会出现一个异常:未经处理的异常: 0xc0000374: 堆已损坏。
解决:
这个操作等于一次性建立了两个数据库连接,并且连接的都是同一个数据库(不知道这样是否合法)。
把数据库连接设为静态变量,并在创建数据库连接之前检查是否已经创建该数据库,这样就能保证多个对象共享一个数据库连接(似乎用单件模式更好),问题解决。
其它类似问题

void Login::queryInDB()
{
 QSqlQuery query = QSqlQuery(DB);
 query->prepare("select * from account where username = :username");
 query->bindValue(":username", username);
 query->exec();
 while (query->next())
 {
  if (password == query->value("password").toString())
  {
   QMessageBox::information(this, "message", "welcome to you");
   this->close();
  }
  else
  {
   QMessageBox::warning(this, "error", "username or password is wrong!\nPlease input again");
  }
 }
}//此处出现 未经处理的异常: 0xc0000374: 堆已损坏

猜测原因:把QSqlQuery对象声明在栈上,空间不够?
在项目属性的qt project setting中,把SQL勾选上就没问题了。
哭死,还以为是局部变量声明在栈上的问题,结果是qt插件的问题。
我被这个问题搞了三天了,啊啊啊啊啊啊啊,我为什么要在vs上用qt啊啊啊啊啊

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值