Почему я не могу динамически инициализировать 2D -массив, как инициализация 1D -массива?C++

Программы на C++. Форум разработчиков
Anonymous
Почему я не могу динамически инициализировать 2D -массив, как инициализация 1D -массива?

Сообщение Anonymous »

Почему я не могу динамически инициализировать 2D -массив, как инициализация 1D массива? Например: < /p>

Код: Выделить всё

class ClassName
{
int* array1d;
int** array2d;

ClassName(int size1, int size2)
{
array1d = new int[size1];        // work.
array2d = new int[size1][size2]; // doesn't work.
}
}
Я искал в Интернете и нашел этот вопрос, и я обнаружил, что вы можете сделать это только в том случае, если вы указали, что длина строки является постоянной, например, array2d = new [size1] [5] .
Я хочу понять, почему. Удерживает «массивы», поэтому им нужно знать размер типа данных «внутреннего массива». Таким образом, они будут выделять память для нее, в зависимости от длины внешнего массива и размера памяти длины внутреннего массива внешнего * sizeof (внутренний массив) , так что размер внутреннего массива должен быть постоянным.
>

Подробнее здесь: https://stackoverflow.com/questions/795 ... a-1d-array

Вернуться в «C++»