gpt4 book ai didi

删除未使用的变量后 C++ hangUp

转载 作者:太空宇宙 更新时间:2023-11-03 10:28:26 30 4
gpt4 key购买 nike

这个简单的代码是在 Dev C++ 中引入的。在此代码中,未使用变量 fa。在我删除或评论它们后,程序挂断了。为什么?

#include <iostream>
#include <vector>

using namespace std;

#define N 10*1000*1000
bool p[N];
int f[N], a[N];
vector<int> primes;


int main()
{
for(int i=2 ; i<=N ; i++)
if(!p[i])
{
for(int j=i ; j<=N ; j+=i)
p[j]=true;// or =1
primes.push_back(i);
}


system("PAUSE");
return EXIT_SUCCESS;
}

最佳答案

你正在 p 数组的边界之后读/写。

在内存中,p[N]数组之后是f[N]数组,然后是a[N]数组。

因此,当您尝试编写 p[n] 时,您实际上会编写 f[0]。

当您删除 f 和数组时,您将写入 vector < int > primes 中的内容。

vector 是一个类,因此您可以搞砸一些重要的事情。我的猜测是当 j == N 时,您的代码将在 push_back 调用时卡住。

关于删除未使用的变量后 C++ hangUp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25075353/

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