gpt4 book ai didi

c++ - 创建邻接表时出现段错误

转载 作者:行者123 更新时间:2023-11-28 07:53:10 25 4
gpt4 key购买 nike

我正在为图形结构创建一个邻接表。下面是我的代码片段 当我在 gdb 中运行时出现“程序接收信号 SIGSEGV,段错误。std::_List_node_base::hook () 中的 0x0040340f”错误。有人可以指出代码中的错误吗。

struct graph{
list<int> vertex;
}*v;

list<int>::iterator it;
cin>>num_vertices;

v = new graph[num_vertices];

if (v == 0)
cout << "Error: memory could not be allocated";

for(i=1;i<=num_vertices;i++)
{
cin>>num_connected;
for(j=1;j<=num_connected;j++)
{
cin>>m;
(v+i)->vertex.push_back(m);
}
}
for(i=1;i<=num_vertices;i++)
for(it= (v+i)->vertex.begin();it!= (v+i)->vertex.end();it++)
cout<<*it<<"->";

最佳答案

C++ 数组是从零开始的,因此应该使用 [0][num_vertices-1] 进行索引。如果您将循环更改为从 0 到 num_vertices-1

for(i=0;i<num_vertices;i++)

您的代码应该可以工作。

当前的失败大概是由于循环的最后一次迭代取消引用 (v+num_vertices) 引起的,这是数组之外的内存。写入您尚未分配的内存会产生未定义的行为,因此段错误不足为奇。

关于c++ - 创建邻接表时出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13290206/

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