русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Тема 18: Процедури та функції для роботи з динамічною пам’яттю

Нижче приводиться опис як вже розглянутих процедур і функцій, так і деяких інших, які можуть виявитися корисними при зверненні до динамічної пам'яті.

Функція ADDR.

Повертає результат типа POINTER, в якому міститься адреса аргументу.

Звернення: ADDR ( X )

тут Х- будь-який об'єкт програми (ім'я будь-якої змінної, процедури, функції). Повертана адреса сумісна з покажчиком будь-якого типа. Відзначимо, що аналогічний результат повертає операція @ .

Функція CSEG.

Повертає значення, що зберігається в регістрі CS мікропроцесора на початку роботи програми в регістрі CS міститься сегмент початку кода програми).

Звернення: CSEG

Результат повертається в слові типа WORD.

Процедура DISPOSE.

Повертає в купу фрагмент динамічної пам'яті, який раніше був зарезервований за покажчиком, що типізувався.

Звернення: DISPOSE(TP)

тут ТР - покажчик, що типізується. При повторному використанні процедури стосовно вже звільненого фрагмента виникає помилка періоду виконання. При звільненні динамічних об'єктів можна вказувати другим параметром звернення до DISPOSE ім'я деструкції (детальніше за див. гл.10).

Функція DSEG.

Повертає значення, що зберігається в регістрі DS мікропроцесора (на початку роботи програми в регістрі DS міститься сегмент почала даних програми).

Звернення: DSEG

Результат повертається в слові типа WORD.

Процедура FREEMEM.

Повертає в купу фрагмент динамічної пам'яті, який раніше був зарезервований за покажчиком, що не типізувався.

Звернення: FREEMEM ( Р, SIZE )

тут Р - покажчик, що не типізується;

SIZE - довжина в байтах фрагмента, що звільняється.

При повторному використанні процедури стосовно вже звільненого фрагмента виникає помилка періоду виконання.

Процедура GETMEM.

Резервує за покажчиком, що не типізується, фрагмент динамічної пам'яті необхідного розміру.

Звернення: GETMEM ( Р, SIZE )

За одне звернення до процедури можна зарезервувати не більше 65521 байта динамічної пам'яті. Якщо немає вільної пам'яті необхідного розміру, виникає помилка періоду виконання. Якщо пам'ять не фрагментована, послідовні звернення до процедури резервуватимуть послідовні ділянки пам'яті, так що почало наступного розташовуватиметься відразу за кінцем попереднього.

Процедура MARK.

Запам'ятовує поточне значення покажчика купи HEAPPTR.

Звернення: MARK ( PTR )

тут PTR - покажчик будь-якого типа, в якому буде повернено поточне значення HEAPPTR. Використовується спільно з процедурою RELEASE для звільнення частини купи.

Функція MAXAVAIL.

Повертає розмір в байтах найбільшої безперервної ділянки купи.

Звернення: MAXAVAIL

Результат має типа LONGINT. За один виклик процедури NEW або GETMEM не можна зарезервувати пам'яті більше, ніж значення, повертане цією функцією.

Функція MEMAVAIL.

Повертає розмір в байтах найбільшої безперервної ділянки купи.

Звернення: MEMAVAIL

Результат має типа LONGINT.

Процедура NEW.

Резервує фрагмент купи для розміщення змінної.

Звернення: NEW ( ТР )

тут ТР - покажчик, що типізується.

За одне звернення до процедури можна зарезервувати не більше 65521 байта динамічної пам'яті. Якщо немає вільної пам'яті необхідного розміру, виникає помилка періоду виконання. Якщо пам'ять не фрагментована, послідовні звернення до процедури резервуватимуть послідовні ділянки пам'яті, так що почало наступного розташовуватиметься відразу за кінцем попереднього.

Процедура NEW може викликатися як функція. В цьому випадку параметром звернення до неї є тип змінної, що розміщується в купі, а функція NEW повертає значення типа покажчик. Наприклад:

Просмотров: 764


Вернуться в оглавление



Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.