Работа с памятью при использовании массивов происходит следующим образом:
- Массив представляется цельным куском памяти. ru.hexlet.io Размер этого куска вычисляется по формуле: количество элементов |* количество памяти под каждый элемент. ru.hexlet.io
- Все элементы массива имеют один тип и занимают одно и то же количество памяти. ru.hexlet.io Благодаря этому при обращении к элементу массива под определённым индексом можно получить адрес ячейки, в которой лежит нужный элемент. ru.hexlet.io
- Индекс в массиве — это смещение относительно начала куска памяти, содержащего данные массива. ru.hexlet.io Адрес, по которому расположен элемент под конкретным индексом, рассчитывается так: начальный адрес + индекс |* количество памяти, занимаемое одним элементом (для данного типа данных). ru.hexlet.io
- При статическом объявлении память под массив выделяется в стеке, массив является локальной переменной и будет уничтожен по правилам локальных переменных. github.com При динамическом объявлении память выделяется в куче программы — её ещё называют динамической памятью, управление ею лежит на программисте. github.com
Для доступа к данным в динамически выделенной памяти используются указатели — переменные, содержащие адрес ячейки памяти. studwork.ru