我有一个指向我试图删除的地图的指针(这个地图是用新分配的)。
我认为这张地图是有效的,当我在调试时将鼠标悬停在它上面时,它显示pMap
:[0]()
..
当我尝试删除这个空地图时,我的应用程序就退出了,我得到了一个
myapp.exe 中 0xsomelocation 的第一次机会异常:0xsomenumber:调用的对象已与其客户端断开连接。
在输出窗口中。这是什么意思?
谢谢..
编辑:这是一些示例代码:
typedef map<const char*, StructA*, StructB> myMap;
typedef vector<myMap *> myMapStack;
StructB 有一个重载的运算符()
编辑:StructB 确实是一个结构,对不起,运算符 () 只是一个字符串比较函数..
在我的代码的某些部分,一个类的构造函数调用一个方法,我们称之为 InitClass(),它像这样初始化一个 myMap 指针:
pMyMap = new myMap; // I also tried this with new myMap()
// this pointer is then pushed onto the a map stack
pMyMapStack.push_back(pMyMap);
稍后在这个类的析构函数中,我去
pMyMap = pMyMapStack.back();
pMyMapStack.pop_back();
delete pMyMap; // after I step over this line the app quits.. and displays that message
谢谢
编辑:我恢复到旧版本的工作代码,现在工作正常..
起作用的是这样的:
// after the pMyMapStack.pop_back()
int x = pMyMap->size();
if (x >= 0)
delete pMyMap;
早些时候,我将其更改为:
// after the pMyMapStack.pop_back()
int (x = pMyMap->size();
if (x >= 0){
pMyMap->clear();
delete pMyMap;
}
奇怪..代码中可能还有其他问题,但我只是不知道在哪里..如果我完整地发布代码,它太大了(我可能会被解雇)所以让我们离开就这样。。
我认为它可能是一个指向我试图清除或删除导致问题的空映射的指针。
感谢所有试图提供帮助的人...... :)