gpt4 book ai didi

c++ - 以下 C++ 代码给出了一些内存分配错误

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

我写了下面的代码。它在某些输入上运行良好,但在其他一些输入上显示错误。

例如,当我尝试输入:

10000 2

1 2

3 4

刚输入第二行就提示如下错误(甚至没有等到第三行)

a.out: malloc.c:2395: sysmalloc: Assertion `(old_top == initial_top (av) && old_size == 0) || ((unsigned long) (old_size) >= MINSIZE && prev_inuse (old_top) && ((unsigned long) old_end & (pagesize - 1)) == 0)' failed.
Aborted (core dumped)

可能是什么原因?

#include <iostream>
#include <list>
#include <cmath>
using namespace std;

void addEdge(list<int> *adj, int a, int b)
{
adj[a].push_back(b);
}

int count = 1;
int dfsVisit(int i, bool *visited,list<int> *adj)
{
visited[i] = true;
list<int> ::iterator k;
for(k=adj[i].begin(); k!=adj[i].end();k++)
{
if(!visited[*k])
{
count ++;
dfsVisit(*k, visited, adj);

}
}
return count;
}

int main()
{
list<int> *adj;
long int n,i,j,a,b,m=0,k;
long int arr[1000000];
cin>>n>>i;
bool *visited = new bool;
for(j=0;j<n;j++)
{
visited[j] = false;
}
adj = new list<int>[n];
for(j=0;j<i;j++)
{
cin>>a>>b;
addEdge(adj, a,b);
}
for(k=0;k<n;k++)
{
if(visited[k]==false)
{
count = 1;
arr[m] = dfsVisit(k, visited, adj);
m++;
}
}

/*for(k=0;k<m;k++)
{
cout<<arr[k];
}*/
long int ans = 1;
if(m>1)
{

for(k=0;k<m;k++)
{
ans = ans * arr[k];
}

}
if(m==1)
{
ans = 0;
}

cout<<ans;

}

最佳答案

您只是将 visited 声明为一个指针,但只为其分配了一个内存槽。

bool *visited = new bool;
for(j=0;j<n;j++)
{
visited[j] = false;
}

关于c++ - 以下 C++ 代码给出了一些内存分配错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41921568/

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