|
|
|
|
Освобождение расширенной памяти
Надлежащим образом сконструированные программы перед завершением закрывают файлы и освобождают обычную память, которая была
размещена из DOS. Аналогичным образом, ресурсы расширенной памяти, размещенные Вашей программой, должны возвращаться менеджеру
расширенной памяти перед завершением программы.
Поскольку он работает независимо от операционной системы, у
менеджера расширенной памяти нет способа определения, когда Ваша
программа завершилась. Если Ваша программа не освобождает явно
все страницы расширенной памяти, которые она размещала перед выходом, следующая программа, которая попытается пользоваться расширенной памятью,
может найти, что расширенная память заполнена,
даже хотя данные в расширенной памяти более не используются.
Если Вы намереваетесь писать здравые приложения с использованием расширенной памяти, для Вашей программы будет недостаточно
возвращать ресурсы менеджеру расширенной памяти перед нормальными
завершениями. Более совершенное обращение должно включать в себя
код для очистки ресурсов расширенной памяти в драйвере прекращения программы (Break = Control-C), драйвере критической ошибки и
драйвере деления на нуль. Прежде всего обработка этих условий
требует значительного объема программирования на языке ассемблера,вместе со способностью разобрать" Техническое справочное руководство по DOS
(DOS Technical Reference Manual)". Правда, недавно
в некоторые продукты языков высокого уровня, включая С 5.0 фирмы
Microsoft и Турбо-Паскаль 4.0 и Турбо-C фирмы Borland, были введены средства для обработки этих условий в самих языках высокого
уровня. У программистов, пользующимся этими продуктами для написания приложений спецификации расширенной памяти, более нет разумных оснований
истолковывать процедуры ненормальных завершений.
|
|