c++错误:如何解决对象的malloc: ***错误.未分配被释放的指针



为什么我在编译后得到这个错误:

Program1(49296,0x7fff74b72000) malloc: ***错误的对象0x7f9222500040:指针释放未分配

有办法解决吗?我只在递归时得到它,但是如果我去掉这一行:

if(counter == G.nameSet.size())
{  
  explore(G, *adjPtr);
}

…然后

工作
void explore(Graph & G, Node & foo)
{
  G.nameSet.insert(foo.name());
  set <string> tempNameSet;
  list <Node> adjacentList = G.getAdjNodes(foo); 
  int y = adjacentList.size();
  list<Node>::iterator adjPtr = adjacentList.begin();
  for(int i=0; i < y;  i++ )
  {
tempNameSet = G.nameSet;
set<string>::iterator nSetPtr = G.nameSet.begin();
int counter = 0;
for (int j = 0; j < G.nameSet.size(); j++)
{ 
  if(*nSetPtr != adjPtr->name())
    counter++; 
  if(tempNameSet.size() > 1)
    nSetPtr  = tempNameSet.erase(nSetPtr);
}
if(counter == G.nameSet.size())
{  
  explore(G, *adjPtr);  //even when I plug in foo instead of *adjPtr, i get the same error
}
if(adjacentList.size() > 1)
  adjPtr  = adjacentList.erase(adjPtr);
  }
}

这很难,因为该函数没有直接调用free。我猜,它在擦除(adjPtr)中崩溃了。为了验证这种情况,在调用之前和之后放置一个诊断打印,并且在调用之间应该发生崩溃。adjPtr可能是空的,这导致擦除失败,但确切的逻辑错误是很难告诉。

相关内容

  • 没有找到相关文章

最新更新