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次都不会崩溃..
尽量不要给构造属性设置默认值,可能当时没问题,随着时间边长项目变大,可能会出现莫名其妙的问题。
分类:
C/C++
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!