首页 > 解决方案 > 当我运行我的代码时,我不断收到此错误“在抛出 'std::bad_alloc' what(): std::bad_alloc 的实例后调用终止”

问题描述

此错误发生在我的 C++ 代码的“bfs”函数中。我正在尝试编写图形数据结构,但似乎有些东西要么没有初始化,要么没有按应有的方式存储输入。谁能帮我解决这个问题?

#include<iostream>
#include<vector>
#include<queue>
#include<stack>
using namespace std;

void bfSearch(int n,vector<int> adj[])
{
    cout<<"Inside function"<<endl;
    vector<int> bfsv;
    vector<int> vis(n+1,0);

    for(int i=1;i<=n;i++)
    {
        if(!vis[i])
        {
            queue<int> q;
            q.push(i);
            vis[i]=1;
            while(!q.empty())
            {
                int node=q.front();
                q.pop();
                bfsv.push_back(node);
                for(auto it:adj[node])
                {
                    q.push(it);
                    vis[it]=1;
                }
            }
        }
    }
    for(auto it:bfsv)
    {
        cout<<it<<"  ";
    }
}


int main()
{
    int n,m;
    cin>>n>>m;
    vector<int> adj[n+1];
    for(int i=0;i<m;i++)
    {
        int u,v;
        cin>>u>>v;
        adj[u].push_back(v);
        adj[v].push_back(u);
    }

    // vector<int> res=bfSearch(n,adj);
    // for(auto it:res)
    // {
    //     cout<<it<<" ";
    // }
    // cout<<endl;
    bfSearch(n,adj);
}

是因为向量还是队列?

标签: c++data-structuresgraph-algorithm

解决方案


通常,std::bad_alloc意味着堆内存分配失败(并且您的系统内存不足)。

在您的情况下,这可能是由过高的控制台输入(对于、 或n变量m)引起的。uv

顺便说一句,总是首先尝试使用调试器来定位导致问题的确切代码行(以帮助试图回答的人)。


推荐阅读