我发现在运行此代码时它会说:
Thread1:EXC_BAD_ACCESS(code=1,address=0x7fff3010efcc)
代码:
#include <iostream>
using namespace std;
int main()
{
int d[20],n,k,j,i,a[100000000],count=0;
//long long int i,a[100000000];
cin>>n>>k;
for(i=0;i<k;i++)
{
cin>>d[i];
}
for(i=0;i<n;i++)
{
a[i]=i;
}
for(i=0;i<n;i++)
{
for(j=0;j<k;j++)
{
if(a[i]%d[j]==0)
{
a[i]=0;
}
}
}
for(i=0;i<n;i++)
{
if(a[i]!=0)
{
count++;
}
}
cout<<count;
}
答案 0 :(得分:1)
堆栈溢出。 int a[100000000]
没有位置,因为它的大小超过了默认堆栈大小(Windows上为1MB)
答案 1 :(得分:0)
如果我们不知道n
和k
的值,我们就无法对您的问题作出适当回应。
例如,如果您将值21
提供给k
,则在cin >> d[i]
位置写下d
)20
;这可能会导致分段错误。
建议:
1)在调试器中运行程序
2)检查n
和k
3)并使用std::vector
代替旧的C风格数组,使用at()
代替operator[]
(例如:cin >> d.at(i)
,a.at(i) = i
等代替{ {1}},cin >> d[i]
等)因为a[i] = i
执行绑定检查。