gpt4 book ai didi

c++ - 指针数组段错误

转载 作者:行者123 更新时间:2023-11-30 02:58:48 26 4
gpt4 key购买 nike

我不完全确定为什么我会收到这段代码的段错误。我有一个要创建的对象指针数组。这是我的代码。

   edge **test = new edge*[a]; //Edge is a predefined class I have created. a is a my size of my array.
graphCreate2(test, vertices, roads, a); //Note roads is an edge class I have already created also

但是,当我尝试访问 edge ** test 的元素时,出现段错误。这是我访问它的方式。

void graphCreate2(edge **test, int vertices, edge *roads, int a)
{
for(int i = 0; i < a; i++)
{
e[i]->setEdgeSrc(roads[i].getEdgeSrc());
e[i]->setEdgeDes(roads[i].getEdgeDes());
e[i]->setLength(roads[i].getLength());
cout << e[i]->getLength() << " " << e[i]->getEdgeSrc() << " " << endl;
}
}

可能有人知道我为什么会遇到这个段错误吗?我以为我为它分配了内存,因为在创建数组时调用了构造函数谢谢!

最佳答案

为每个 调用构造函数。您只是在创建指针数组,但它们指向垃圾。

您需要在循环中创建它们。

void graphCreate2(edge **test, int vertices, edge *roads, int a)
{
for(int i = 0; i < a; i++)
{
test[i] = new edge(); // create the edge
test[i]->setEdgeSrc(roads[i].getEdgeSrc());
test[i]->setEdgeDes(roads[i].getEdgeDes());
test[i]->setLength(roads[i].getLength());
cout << test[i]->getLength() << " " << test[i]->getEdgeSrc() << " " << endl;
}
}

关于c++ - 指针数组段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13443521/

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