MSVC崩溃记录结构体属性设置默认值new时

建议结构体中不要日志默认值, 例:

复制代码
struct MapDataItem {
    bool isChip;//当前位置是否是芯片
    int x;
    int y;
    //int firstChipIndexX;
    bool isLeftEnd;//到最左边
    bool isRightEnd;//到最右边
    bool isTopEnd;//到最上边
    bool isBottomEnd;//到最下边

    //是否选择
    bool selected = false;
    //测试结果 1:好, 2:坏
    int state;

    //是否需要打点
    bool isDot;

    //芯片类型: 待测点、坏点、仅打点、标记点
    MapType type;


    int r = MAPITEM_DEFAULT_COLOR_R, g = MAPITEM_DEFAULT_COLOR_G, b = MAPITEM_DEFAULT_COLOR_B;//颜色RGB值, 默认待测点: 灰值
};
复制代码

这里selected 设置了默认值false, 在项目中运行以下代码报错:

int main(int argc, char *argv[])
{
    MapFormat mapFormat;
    mapFormat.test();
    return 0;
}

mapformat.cpp

void MapFormat::test()
{
    for(int i = 0; i < 100; i++) {
        MapDataItem * item = new MapDataItem();
    }
}

但是当把test()函数中100改成3后,运行正常:

void MapFormat::test()
{
    for(int i = 0; i < 3; i++) {
        MapDataItem * item = new MapDataItem();
    }
}

当新建了一个小项目,把MapFormat移动到小项目中,想单独试试核心报错代码,test函数循环3次、100次、100000次都不会崩溃..

尽量不要给构造属性设置默认值,可能当时没问题,随着时间边长项目变大,可能会出现莫名其妙的问题。

 

posted @   耿明岩  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
希望能帮助到你,顺利解决问题! ...G(^_−)☆
点击右上角即可分享
微信分享提示