Книга: Системное программирование в среде Windows
Базовые указатели
Базовые указатели
Как показали предыдущие примеры, во многих случаях метод отображения файлов является весьма удобным. Однако предположим, что в программе создается структура данных с указателями, ссылающимися на область отображения файла, и ожидается, что впоследствии к этому файлу будет производиться обращение. В этом случае указатели оказываются установленными относительно виртуального адреса, возвращенного функцией MapViewOfFile, и не будут иметь смысла при использовании представления объекта отображения в следующий раз. Решение состоит в том, чтобы использовать базовые указатели (based pointers), являющиеся фактически смещениями относительно другого указателя. Соответствующий синтаксис Microsoft С, доступный в Visual C++ и некоторых других системах, выглядит следующим образом:
тип _based (база) объявление
Ниже показаны два примера таких указателей.
LPTSTR pInFile = NULL;
DWORD _based (pInFile) *pSize;
TCHAR _based (pInFile) *pIn;
Обратите внимание на тот факт, что синтаксис требует использования символа *, хотя такая практика противоречит соглашениям Windows.
- Архитектура системы управления памятью в Win32 и Win64
- Куча
- Управление памятью кучи
- Пример: сортировка файлов с использованием бинарного дерева поиска
- Отображение файлов
- Пример: последовательная обработка файлов с использованием метода отображения
- Пример: сортировка отображенных файлов
- Базовые указатели
- Пример: использование базовых указателей
- Динамически компонуемые библиотеки
- Пример: явное связывание функци и преобразования файлов
- Точки входа библиотеки DLL
- Управление версиями DLL
- Резюме
- Упражнения
- 3.6.4. Базовые настройки сети
- Базовые типы и указатели
- Лекция № 7. Базовые отношения
- Указатели на столбах
- Указатели
- 1. Базовые типы данных
- Базовые категории
- Базовые криптографические механизмы сервисов безопасности PKI
- 1.2. Базовые понятия HTML
- Базовые продукции XML
- Указатели файлов
- Глава 5. Указатели и массивы