
Другие языки программирования и технологии
Не удаляется 3-мерный динамический массив... C++

Нет в приведённом коде ошибки.
Ты где-то подпортил содержимое массива в промежуточном коде. Между заполнением и удалением работал с массивом и вылетел за границу. А может даже и с соседней переменной. Или size не константа и успел измениться перед удалением.
Ты где-то подпортил содержимое массива в промежуточном коде. Между заполнением и удалением работал с массивом и вылетел за границу. А может даже и с соседней переменной. Или size не константа и успел измениться перед удалением.
Дмитрий ///v///
Вы абсолютно правы. Я нашёл ошибку, и она заключалась именно в выходе за границу...
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
size_t layers = 3, rows = 5, columns = 7;
size_t size_buffer = layers * rows * columns;
size_t total_rows = layers * rows;
int* buffer = new(nothrow) int[size_buffer];
if (buffer) {
int** matrix = new int*[total_rows];
int*** box = new int**[layers];
for (size_t row = 0; row != total_rows; ++row) matrix[row] = buffer + columns * row;
for (size_t layer = 0; layer != layers; ++layer) box[layer] = &matrix[layer * rows];
int value = 0;
for (size_t index = 0; index != size_buffer; ++index) buffer[index] = ++value;
for (size_t layer = 0; layer != layers; ++layer, cout << '\n')
for (size_t row = 0; row != rows; ++row, cout << '\n')
for (size_t column = 0; column != columns; ++column)
cout << setw(5) << box[layer][row][column];
delete[] buffer;
delete[] matrix;
delete[] box;
} else cout << "Could not allocate memory!\n";
cin.get();
}
#include <iomanip>
using namespace std;
int main() {
size_t layers = 3, rows = 5, columns = 7;
size_t size_buffer = layers * rows * columns;
size_t total_rows = layers * rows;
int* buffer = new(nothrow) int[size_buffer];
if (buffer) {
int** matrix = new int*[total_rows];
int*** box = new int**[layers];
for (size_t row = 0; row != total_rows; ++row) matrix[row] = buffer + columns * row;
for (size_t layer = 0; layer != layers; ++layer) box[layer] = &matrix[layer * rows];
int value = 0;
for (size_t index = 0; index != size_buffer; ++index) buffer[index] = ++value;
for (size_t layer = 0; layer != layers; ++layer, cout << '\n')
for (size_t row = 0; row != rows; ++row, cout << '\n')
for (size_t column = 0; column != columns; ++column)
cout << setw(5) << box[layer][row][column];
delete[] buffer;
delete[] matrix;
delete[] box;
} else cout << "Could not allocate memory!\n";
cin.get();
}
Самый простой вариант воспользоваться "умением" С++11 создавать массив "переменного" размера
int size;
cin>>size;
int arr[size][size][size];
int size;
cin>>size;
int arr[size][size][size];
std::vector{std::vector{std::vector{int}}}}} arr_3d;
удаление:
delete arr_3d;
}{ = ><
удаление:
delete arr_3d;
}{ = ><
Какая-то проблема
Дмитрий ///v///
Но какая именно?
Похожие вопросы
- Как вставить новый элемент в начало динамического массива (C++)
- динамический массив в Visual C++
- вопрос о динамических массивах в fortran
- пожалуйста, напишите мне программу этого вопроса в C ++.пожалуйста помогите. Создать динамический массив из N чисел.
- Как описать и использовать динамический массив в C++
- Написать программу в VBA арифметической прогрессии в динамическом массиве.
- С++: Как изменять размеры многомерных динамических массивов по ходу выполнения программы?
- c++ динамический массив
- Вычислить сумму нечетных элементов в программа С++ .Через статический и динамический массив! Вот я сам написал проверьте
- С++ Динамический массив