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次都不会崩溃..
尽量不要给构造属性设置默认值,可能当时没问题,随着时间边长项目变大,可能会出现莫名其妙的问题。
浙公网安备 33010602011771号