首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

为什么用multi地图时插入相同键的重复数据值运行时会报CMemoryException

2012-07-18 
为什么用multimap时插入相同键的重复数据值运行时会报CMemoryException定义:multimapstring, TempTrack

为什么用multimap时插入相同键的重复数据值运行时会报CMemoryException
定义:
multimap<string, TempTrack> preTrack;

键是string类型,值是结构体类型,而TempTrack结构体又是如下

定义的:
typedef struct
{
stringp;
intpoint_id;
intstatus;
doubletime;
Vector<double> X_0;
Matrix<double> R;
Matrix<double> P_0;
intunAssoTime;
}TempTrack;

TempTrack的size是120字节,这里面用到的Vector和Matrix是向量和矩阵类,虽然包含了指针,但应该安全无误。

奇怪的是使用:
preTrack.insert(make_pair(p,trdata));
向preTrack里插入数据时,相同的键只有第一次可以正确插入,第二次再插入重复的键其它的值,就会报CMemoryException的异常,会说“XXX.exe”中的0x7c812afb处未处理的异常:Microsoft C++异常:内存位置XXX处的CMemoryException"

就比方说我插入("100",{...}),("101",{...}),但是再插入(就"100",{...})程序就会中断。
而且,相同的方法在Win32控制台程序就没问题,在MFC底下使用就有问题。

不知道是为什么?请各路大神指教,不知道说清楚了没。。。

谢谢!


[解决办法]
如果MFC的话为什么类不用CString呢??
[解决办法]
崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处。

热点排行