Трёхмерный динамический массив. Помогите найти ошибку. C++

//Создание трёхмерного массива

int x, y, z;

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

for (int i = 0; i < x; i++)
{
    arr[i] = new int *[y];

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

//Заполнение массива случайными числами и вывод в консоль

for (int i = 0; i < x; i++)
{
    for (int j = 0; j < y; j++)
    {
        for (int k = 0; k < z; k++)
        {
            arr[i][j][k] = rand() % 40;
        }
    }
}

for (int i = 0; i < x; i++)
{
    for (int j = 0; j < y; j++)
    {
        for (int k = 0; k < z; k++)
        {
            cout << arr[i][j][k] << "\t";
        }

        cout << endl;
    }
    cout << endl;
}

//Очистка памяти

for (int i = 0; i < x; i++)
{
    for (int j = 0; j < y; j++)
    {
        delete[] arr[i][j];
    }

    delete[] arr[i];
}

delete[] arr;

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

Автор решения: Mikhailo

По всей видимости, неинициализированные локальные переменные x, y и z у вас получают какие-то случайные значения, так что памяти просто не хватает.

Попробуйте обернуть весь код в конструкцию

try {

    // Ваш код

} catch(std::exception& e) {
    cout << e.what();
}

и посмотреть, что получится.

А потом все же укажите явно, какого размера трехмерный масасив вам нужен.

→ Ссылка