gpt4 book ai didi

c++ - 读取访问冲突错误

转载 作者:行者123 更新时间:2023-11-27 23:34:01 25 4
gpt4 key购买 nike

class Node{
private:
string name;
Node** adjacent;
int adjNum;
public:
Node();
Node(string, int adj_num);
Node(const Node &);
bool addAdjacent(const Node &);
Node** getAdjacents();
string getName();
~Node();
};

bool Node::addAdjacent(const Node &anode){
Node** temp;
temp= new Node*[adjNum+1];
for(int i=0;i<adjNum+1;i++)
temp[i]=adjacent[i];
temp[adjNum]=const_cast<Node *>(&anode);
delete[] adjacent;
adjacent=new Node*[adjNum+1];
adjacent=temp;
delete[] temp;
adjNum++;
return true;
}

int main()
{
Node node1("A",0);
Node node2("B",0);
node1.getName();
node1.addAdjacent(node2);
system("PAUSE");
return 0;
}

当程序进行到这部分时:

for(int i=0;i<adjNum+1;i++)
temp[i]=adjacent[i];

它说访问冲突读取位置 0xcccccccc。该类必须分配内存相邻,但我认为它没有我怎么能解决这个问题?

最佳答案

 adjacent=new Node*[adjNum+1];
adjacent=temp;
delete[] temp;

这看起来像一个错误。你可能打算写:

adjacent = temp;

就是这样。

另外,我觉得问题出在

for(int i=0;i<adjNum+1;i++)

您正在复制 adjNum+1 元素,即使(我假设)adjacent 仅包含 adjNum 元素。从 for 循环中删除 +1

关于c++ - 读取访问冲突错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2443780/

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