gpt4 book ai didi

C++ 错误 : How to solve malloc: *** error for object . .. 未分配正在释放的指针

转载 作者:行者123 更新时间:2023-11-30 19:37:27 27 4
gpt4 key购买 nike

为什么我编译后会收到此错误:

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)中崩溃了。要验证情况是否如此,请在调用之前和之后放置诊断 printf,并且崩溃应该在调用之间发生。可能 adjPtr 变空并导致删除失败,但是很难判断逻辑错误到底在哪里。

关于C++ 错误 : How to solve malloc: *** error for object . .. 未分配正在释放的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39824325/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com