Необработанные исключения Stack Overflow

304
02 апреля 2017, 04:57

Необработанные исключения по адресу 0x00821CC9 в п.exe: 0xC00000FD: Stack overflow (параметры: 0x00000000, 0x006E2000)

#include <iostream>
#include <vector>
using namespace std;
int main()
{
    long long v[1901][2015];
    long long p[1901][2015];
    long long i, j, k = 1, n = 0;
    for (i = 0; i < 1901; ++i)
        for (j = 0; j < 2015; ++j)
        {
            p[i][j] = k;
            ++k;
        }
    k = 1;
    for (i = 0; i < 2015; ++i)
        for (j = 0; j < 1901; ++j)
        {
            v[j][i] = k;
            ++k;
        }
    for (i = 0; i < 1901; ++i)
        for (j = 0; j < 2015; ++j)
            if (v[i][j] == p[i][j])
                ++n;
    cout << n;
    system("pause");
    return 0;
}
Answer 1

Ваша проблема в целом понятна и без деталей, но в следующий раз не поленитесь написать больше.

У вас слишком большие массивы для функции. Внутри функции доступен только определенный объем памяти, в случае требования большего - получаете ошибку - stack overflow, что, собственно, и вышло. Вынесите эти массивы в глобальную область видимости.

#include <iostream>
#include <vector>
long long v[1901][2015];
long long p[1901][2015];
int main()
{
long long i, j, k = 1, n = 0;
for (i = 0; i < 1901; ++i)
    for (j = 0; j < 2015; ++j)
    {
        p[i][j] = k;
        ++k;
    }
k = 1;
for (i = 0; i < 2015; ++i)
    for (j = 0; j < 1901; ++j)
    {
        v[j][i] = k;
        ++k;
    }
for (i = 0; i < 1901; ++i)
    for (j = 0; j < 2015; ++j)
        if (v[i][j] == p[i][j])
            ++n;
std::cout << n;
system("pause");
return 0;
}

P.S. Не рекомендую писать using namespace std;, пишите лучше std::, когда Вы будете писать большие проекты, в них будет много пространств имен и Вы поймете, что это удобнее.

READ ALSO
Странный синтаксис С++ кода в библиотеке LuaBind

Странный синтаксис С++ кода в библиотеке LuaBind

Заинтересовался либой LuaBindЧитаю доку, разбираю примеры

218
как закрыть окно браузера по его названию и запустить ярлык

как закрыть окно браузера по его названию и запустить ярлык

как закрыть окно браузера по его названию, а потом (если закрытие было) открыть ссылку/ярлык/батник?

195
Переключение между окнами в Qt версии 4.8

Переключение между окнами в Qt версии 4.8

В общем сделал как в примере на сайте https://evilegcom/ru/post/112/

254
Ошибка памяти Android NDK

Ошибка памяти Android NDK

При использовании функции strcat() появляется ошибка (в любой момент, если вызвать функцию не один раз):

233