Трёхмерный динамический массив. Помогите найти ошибку. 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();
}
и посмотреть, что получится.
А потом все же укажите явно, какого размера трехмерный масасив вам нужен.