|
||||||
Освобождение памяти, занятой элементами динамического массиваОсвобождение памяти, занятой элементами динамического массива Память, зарезервированная под динамический массив с помощью new[], должна освобождаться оператором delete[], память, выделенная функцией malloc — посредством функции free. При несоответствии способов выделения и освобождения памяти результат не определен. Размерность массива в операции delete не указывается, но квадратные скобки обязательны. Многомерные массивы Описанные выше массивы называются одномерными, так как положение одного элемента в нём описывается одним индексом. В многомерных массивах положение одного элемента определяется значением нескольких индексов. Таким образом, можно ввести общую форму объявления массива, которая представлена следующим образом:
В памяти компьютера элементы многомерного массива располагаются в порядке возрастания их адресов. Таким образом, массив состоящий из двух строк и трёх столбцов будет расположен в памяти следующим образом:
Многомерные массивы размещаются так, что при переходе к следующему элементу быстрее всего изменяется последний индекс. Общее количество элементов такого массива определяется как произведение количества строк на количество столбцов. А количество памяти, которое требуется отвести под такой массив определяется как произведение количества элементов на их размер. Так, например, если мы имеем массив, состоящий из 5-ти строк и 3-х столбцов, которые хранят значения типа short int, то: · Количество элементов в массиве = 5*3 = 15; · Количество памяти, отводимое под массив = 15*2 (байта) = 30 байт. Инициализировать массив можно ровно тем же способом, которым инициализировался одномерный массив, т.е. путём перечисления значения элементов в фигурных скобках.
Однако, нередко требуется проводить инициализацию массива в процессе выполнения программы. В таких случаях, как правило, используются циклы, имеющие уровень вложенности, соответствующий количеству размерностей. Для создания динамического многомерного массива необходимо указать в операции new все его размерности.
Самая левая размерность может быть переменной. Для осуществления доступа к определённому элементу многомерного массива используются все его индексы в том же формате, что и для одномерных массивов. Однако, здесь можно воспользоваться и более экзотическим способом организации доступа к элементу.
|
||||||
|