QMap iterator crash实例 - 隐式共享

问题描述

最近遇到一个bug, 关于嵌套调用QMap迭代器,大循环只循环一次,crash信息提示停在`iterator::operator++

Qt5Cored.dll!QMapNodeBase::nextNode() Line 89 C++
demo64.exe!QMapNode<__int64,QString>::nextNode() Line 117 C++
demo64.exe!QMap<__int64,QString>::iterator::operator++() Line 426 C++
demo64.exe!demo64::demo64(QWidget * parent) Line 15 C++
`

代码抽象出来如下:

cpp文件:

#include "demo64.h"
#include<QtDebug>
demo64::demo64()
{
   
	_info.clear();
	_info.insert(1, "Monday");
	_info.insert(2, "Tuesday");

	QMap<qint64, QString>::iterator itt;
	for (itt = _info.begin(); itt != _info.end(); ++itt) // 执行到第二次时crash
	{
   
		qDebug() << "value addr=" << &(itt.value());
		QMap<qint64, QString> info = _info; // 关键
	    QMap<qint64, QString>::iterator it;
		for (it = _info.begin(); it != _info.end(); ++it)
		{
   
			qDebug() << "value addr2=" <&l
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值