内存位置C++范围错误

C++ Range Error at Memory Location?

本文关键字:错误 范围 C++ 位置 内存      更新时间:2023-10-16

新手在这里。尝试运行这个简短的程序时,我似乎在内存位置出现范围错误。我不知道这意味着什么,这有点令人沮丧。

int main()
{
int grains_current = 1;
vector <int> previous;
int sum = 0;
int i = 0;
for (int i = 0; i<10; ++i) sum += previous[i];
    previous.push_back(grains_current);
    grains_current = grains_current*2;
    if (sum >= 10)
        cout<<i<<"tnn";
sum += previous[i];

此时,尚未为向量previous提供任何值,因此您获得超出范围的访问此地址的未定义行为。

更新:这是我认为您的代码应该是什么:

for (int i = 0; i < 10; ++i)
{
    previous.push_back(grains_current);
    sum += previous[i];
    grains_current *= 2;
    if (grains_current >= 1000)
        std::cout << sum << "nn";
}