Нарушение прав доступа при чтении по адресу c++

Происходит ошибка нарушения прав доступа при чтении. Если ввожу 1, то всё работает верно, при вводе 2 и больше получаю ошибку

#include <iostream>

int main()
{
    setlocale(LC_ALL, "Russian");
    int n;
    std::cout << "Введите размерность массива: ";
    std::cin >> n;

    int **arr = new int*[n];

    for (int i = 0; i < n; i++)
    {
        arr[i] = new int[n];
    }

    int pos[2] = { 0, 0 };
    int vec[2] = { 1, 0};

    const int down_vec[2] = { 1, 0 };
    const int right_vec[2] = { 0, 1 };
    const int upgor_vec[2] = { -1, 1 };
    const int downgor_vec[2] = { 1, -1 };

    for (int i = 0; i < n * n; i++)
    {
        arr[pos[0]][pos[1]] = i+1;

        if (std::equal(std::begin(vec), std::end(vec), std::begin(down_vec)))
        {
            if (pos[0] == 0)
            {
                pos[0] = pos[0] - 1;
                pos[1] = pos[1] + 1;
                for (int k = 0; k < 2; k++)
                {
                    vec[k] = upgor_vec[k];
                }

            }
            else
            {
                pos[0] += 1;
                pos[1] -= 1;
                for (int k = 0; k < 2; k++)
                {
                    vec[k] = downgor_vec[k];
                }
            }
        }
    }

    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
            std::cout << arr[i][j];
        }
        std::cout << "" << std::endl;
    }
}

Ответы (0 шт):