好的,通过网络和堆栈内部流程查找它大约一个小时并没有发现这样的情况,确定有几种情况,但它们似乎都没有相同的根。
好的,我需要迭代multimap
并将它们存储在vector
中。这是代码:
DataVector::iterator curr = m_rawBuffer[0]->begin();
DataVector::iterator last = m_rawBuffer[0]->end();
for( ; curr != last; ++curr) {
delete (*curr);
}
delete m_rawBuffer[0];
DataVector::iterator curr2 = m_rawBuffer[1]->begin();
DataVector::iterator last2 = m_rawBuffer[1]->end();
for( ; curr2 != last2; ++curr2) {
delete (*curr2);
}
delete m_rawBuffer[1];
DataVector
是std::multimap<MyData*>
。
m_rawBuffer
是std::vector<DataVector*>
。
最奇怪的是m_rawBuffer[0]
上的第一个迭代器工作正常,但迭代m_rawBuffer[1]
不起作用!更奇怪的是,它只在一台机器中断开,它在分布式系统上运行,所有其他机器都很好。
来自operator[]
的{{1}}会返回一个引用,对吗?