56
Маленькая модель. Под подпрограммы отводится сегмент памяти
размером 64 Кбайт. Статические, динамические объекты и стек занимают в общей
сложности также 64 Кбайт памяти. Такая модель памяти принимается по
умолчанию и вполне подходит для многих маленьких и средних задач.
Переменные типа указатель занимают в такой модели два байта (близкие
указатели).
Средняя модель. Код
программы размещается в сегменте памяти размером
1 Мбайт. Статические, динамические объекты и стек занимают 64 Кбайт памяти.
Такую модель рекомендуется использовать для программирования больших
задач, имеющих малый объем данных. Для адресации в коде программы
используются далекие указатели, занимающие 4 байта (все вызовы функций и
возвраты из функций — далекие); для адресации данных используются близкие
указатели, занимающие два байта.
Компактная модель. Под подпрограммы отводится 64 Кбайт. Под
статические, динамические объекты и стек отводится 1Мбайт, но размер области
памяти под статические объекты ограничивается величиной 64 Кбайт, под стек —
также 64 Кбайт. Такая модель применяется для программирования малых и
средних задач с большим количеством данных. Для адресации в коде программы
используются
близкие (двухбайтовые) указатели; для адресации данных
используются далекие (четырехбайтовые) указатели.
Большая модель. Под подпрограмы отодится 1 Мбайт памяти. Под
статические. динамические объекты и стек также отводится 1 Мбайт, но
статические объекты и стек занимают по 64 Кбайт памяти. Эта модель
используется только для создания очень больших программных продуктов. В этой
модели все указатели
далекие.
Огромная модель аналогична большой модели, но статические объекты
могут занимать объем более 64 Кбайт. В модели используются далекие указатели.
§2.17. Массивы
Большинством объектов языка Си, с которыми мы имели дело, были
переменные. Каждая переменная при объявлении получала тип и имя, с которым
связывалась вполне определенная ячейка памяти. Однако расположение значений
переменных
по адресам памяти никак не упорядочивалось. При решении многих
задач, особенно с большим количеством однотипных данных, использование
переменных с различными именами, а значит не упорядоченных по адресам
памяти, затрудняет или делает вообще невозможным програмирование. В
подобных случаях в языке Си используют объекты, называемые массивами.
Массив — это упорядоченная последовательность величин, обозначаемая
одним именем. Упорядоченность заключается в том, что элементы массива
располагаются в последовательных ячейках памяти. Можно провести аналогию
между ячейками памяти, отведенными под массив, и таким же количеством
контейнеров, скрепленных между собой (см. рис. 2.17.1). На всю конструкцию
контейнеров повешен ярлык с именем массива data. Контейнеры в такой