调试时是没错的,运行生成的exe文件时才出错,请问该怎么解决?

在OnBnClickedRadio函数(radio控件消息函数)中使用成员vector变量时出错。是怎么回事呢。
错误提示 deque iterator not dereferencable
void OnBnClickedRadio()
{
std::vector<MYDATE>::iterator it = m_vec.begin();
....
char str[30];
sprintf(str,"%4d年%2d月%2d日",it->date.year,it->date.month,it->date.day);///这句时出错
}
全部贴出来恐怕放不下吧,有几个文件,MYDATE是个正确的大小固定的结构体。

炎炎设计
浏览 133回答 2
2回答

慕虎7371278

假如 vector<MYDATE> foo(){....return ..;}前面加一个std::vector<MYDATE> m_vec = foo();std::vector<MYDATE>::iterator it = m_vec.begin();因为deque iterator it 的生命周期到分号结束。sprintf 时,它不再可以取出值来。deque iterator not dereferencabledeque == double-ended queue是 abstract data structure两端可进,两可端出。

慕容3067478

估计m_vec是空的,也就是it为空。或者重定义?
打开App,查看更多内容
随时随地看视频慕课网APP