cannot seek value-initialized vector iterator 程序崩溃

程序启动了一会 送了一张图

dump是这样的

*** Aborted at 1612622285 (unix time) try "date -d @1612622285" if you are using GNU date ***
@ 0x743dfd98 raise
@ 0x743dc535 _setmbcp
@ 0x743dd382 _CrtSetReportHookW2
@ 0x743ddf1f _VCrtDbgReportA
@ 0x743dd2af _CrtDbgReport
@ 0x7450ab (unknown)
@ 0x723ff0 (unknown)
@ 0x7445b8 (unknown)
@ 0x7df546 (unknown)
@ 0x793d1c (unknown)
@ 0x79246a (unknown)
@ 0x722149 (unknown)
@ 0x792167 (unknown)
@ 0x793d45 (unknown)
@ 0x792496 (unknown)
@ 0x792646 (unknown)
@ 0x7921f7 (unknown)
@ 0x7962cc (unknown)
@ 0x793d75 (unknown)
@ 0x792b45 (unknown)
@ 0x743e6cf2 _register_onexit_function
@ 0x76106359 BaseThreadInitThunk
@ 0x77ac7b74 RtlGetAppContainerNamedObjectPath
@ 0x77ac7b44 RtlGetAppContainerNamedObjectPath

 

打开远程调试 终于定位到了问题

//提取错误号并去重
std::transform(alarm_msg_datas.begin(), alarm_msg_datas.end(), req->m_alarm_code_list.begin(), [=](const GRPCBlackBoxAlarmLogQueryResponseClientData& a) {return a.alarm_id; });

 

最终在这得到了答案:

https://coderoad.ru/57393349/%D0%9F%D0%BE%D1%81%D0%BB%D0%B5-%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F-%D0%BF%D1%80%D0%B5%D0%BE%D0%B1%D1%80%D0%B0%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F-%D0%B4%D0%BB%D1%8F-%D0%B7%D0%B0%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F-%D0%B2%D0%B5%D0%BA%D1%82%D0%BE%D1%80%D0%B0-%D0%BD%D0%BE%D0%B2%D1%8B%D0%B9-c-11-for-loop

 

 

通常,对开始/结束迭代器的操作不会调整容器的大小。

std::transform(v.begin(), v.end(), std::back_inserter(v1), mult);
或者
v1.resize(v.size());
std::transform(v.begin(), v.end(), v1.begion(), mult);
 
posted @ 2021-02-06 23:07  wolbo  阅读(2232)  评论(0编辑  收藏  举报