QMap遍历时Beng的异常特性记录

//会崩溃的写法
    for(auto var = valueRow.mapValue().begin(); var != valueRow.mapValue().end(); var++)
    {
        if (!var.value().isValid() || var.value().isNull())
            continue;
        this->addItem(var.key(), var.value());
    }


//不会崩溃的写法
    QMap<int, QVariant> valueRow_ =  valueRow.mapValue();
    for(auto var = valueRow_.cbegin(); var != valueRow_.cend(); var++)
    {
        if (!var.value().isValid() || var.value().isNull())
            continue;
        this->addItem(var.key(), var.value());
    }


//车祸现场
struct QMapNode : public QMapNodeBase
{
...
...   

    inline QMapNode *nextNode() { return reinterpret_cast<QMapNode *>(QMapNodeBase::nextNode()); }

...
...



实质上没有不同,为何会崩溃???
::组长郑涛分析:
var != valueRow.mapValue().end() 每次都会拷贝一份新的。但是var是var = valueRow.mapValue().begin()这里的拷贝。 每次拷贝都不一样造成的Beng。

 

原文链接: https://www.cnblogs.com/azbane/p/12103154.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    QMap遍历时Beng的异常特性记录

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/398484

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年4月12日 上午9:41
下一篇 2023年4月12日 上午9:41

相关推荐