Мы выучим основы менеджмента памяти и файловых операций ввода/вывода в этом Урок е. Также мы используем обычные диалоговые окна как устройства ввода/вывода.
Скачайте пример здесь.
Теория:
Менеджмент памяти под Win32 с точки зрения приложения достаточно прост и прямолинеен. Используемая модель памяти называется плоской моделью памяти. В этой модели все сегментные регистры (или селекторы) указывают на один и тот же стартовый адрес и смещение 32-битное, так что приложение может обратиться к любой точке памяти своего адресного пространства без необходимости изменять значения селекторов. Это очень упрощает управление памятью. Больше нет "дальних" и "ближних" указателей.
Под Win16 существует две основные категории функций API памяти: глобальные и локальные. Функции глобального типа взаимодействуют с памятью в других сегментах, поэтому они функции "дальней" памяти. Функции локального типа взаимодействуют с локальной кучей процессов, поэтому они функции "ближней" памяти.
Под Win32 оба этих типа идентичны. Используете ли вы GlobalAlloc или LocalAlloc, вы получите одинаковый результат.
Вы также можете заменить "Global" на "Local", т.е. LocalAlloc, LocalLock и т.д.
Вышеуказанный метод может быть упрощен использованием флага GMEM_FIXED при вызове GlobalAlloc. Если вы используете этот флаг, возвращаемое значение от Global/LocalAlloc будет указателем на зарезервированный блок памяти, а не хэндл этого блока. Вам не надо будет вызывать Global/LocakLock вы сможете передать указатель Global/LocalFree без предварительного вызова Global/LocalUnlock. Hо в этом туториале я использую "традиционный" подход, так как вы можете столкнуться с ним при изучении исходников других программ.