C++ 我的代码中是否有错误,因为它没有给出正确的输出

C++ 我的代码中是否有错误,因为它没有给出正确的输出,c++,c++11,C++,C++11,错误正好出现在该删除(\up)处。我不明白为什么会发生此错误您有一个向量越界错误(和其他错误) 在你的职责范围内 #endif ::operator delete(__p); } size_type 如果n为奇数,则当i等于n时,p[i]为越界错误 同样的问题 for (int i = 3; i <= n; i += 2) { p[i] = 1; } 用于(ll j=i*i;j Read and.Use Out-bound error不应该存在

错误正好出现在该删除(\up)处。我不明白为什么会发生此错误

您有一个向量越界错误(和其他错误)

在你的职责范围内

#endif
    ::operator delete(__p);
      }

      size_type
如果
n
为奇数,则当
i
等于
n
时,
p[i]
为越界错误

同样的问题

for (int i = 3; i <= n; i += 2)
{
    p[i] = 1;
}

用于(ll j=i*i;j Read and.Use Out-bound error不应该存在,因为向量的大小我已经定义为
n+1
,但感谢我在这里按值传递了向量,这是主要的问题。现在就完成了。@Avinashkumar不,你错了。你创建了n+1的向量,但随后将n+1传递给了函数。所以

void prime_sieve(vector<int> p, int n)
for (int i = 3; i <= n; i += 2)
{
    p[i] = 1;
}
for (ll j = i * i; j <= n; j = j + i)
    p[j] = 0;