сегмента данных. Можно было бы
сегмента данных. Можно было бы использовать здесь другую модель памяти, в которой адрес данных по умолчанию имел бы тип
far, однако для сохранения быстрого доступа к массиву
а лучше сохранить малую модель, а адрес массива
b объявить как
far.
В примере 2 указан большой размер массива
b, поскольку более вероятно, что программист будет модифицировать тип адреса объекта большой длины, который может не поместиться в текущий сегмент.
В примере 3, очевидно, скорость доступа к массиву
а
не является критичной; независимо от того, попадет он в стандартный сегмент или не попадет, обращение к нему всегда будет осуществляться по 32-битовому адресу. В примере 4 массиву
b с помощью модификатора
near явно назначен стандартный сегмент, с целью ускорения доступа к нему в большой модели.
В примере 5 массив
а должен быть явно объявлен как
huge, поскольку его размер превышает 64 Кбайта. Использование модификатора
huge вместо выбора максимальной модели памяти в качестве стандартной позволяет сэкономить время доступа: только к массиву
а обращение будет осуществляться по адресу типа
huge, а все остальные данные будут размещаться в стандартном сегменте. Для обращения к массиву
а может быть использован указатель
ра
из примера 6. Все арифметические операции над указателем
ра
(например,
ра++) будут выполняться над всеми 32 его битами.
В примере 7
ра объявляется как указатель на
near char. Указатель получает тип
near по умолчанию, поскольку речь идет о малой модели. В примере 8
pb явно объявляется как указатель на
far char. Он может быть использован, в частности, для доступа к символьному массиву, расположенному не в стандартном сегменте памяти. Например,
ра
может указывать на массив
а из примера 1, а
pb — на массив
b из примера 2.
Хотя объявления
ра в примерах 9 и 10 идентичны, в примере 9
ра объявляется как указатель на
near
массив указателей на тип
far char, а в примере 10
ра объявляется как указатель на
far массив указателей на тип
far
char.
В примере 11
pb объявляется как указатель на
near массив указателей на тип
farchar. В примере 12
pb
объявляется как указатель на
far массив указателей на тип
far char. В этих примерах употребление слов
far и
near изменяет действующие по умолчанию соглашения, связанные с моделями памяти; в отличие от примеров 9 и 10, объявления
pb не зависят от выбранной модели памяти и в любой модели имеют одинаковый смысл.
Содержание Назад Вперед