2. Работа с динамической памятью. Нетипизированные указатели
2. Работа с динамической памятью. Нетипизированные указатели
Процедуры и функции работы с динамической памятью
1. Процедура New(var p: Pointer).
Выделяет место в динамической области памяти для размещения динамической переменной рЛ, и ее адрес присваивает указателю р.
2. Процедура Dispose(varp: Pointer).
Освобождает участок памяти, выделенный для размещения динамической переменной процедурой New, и значение указателя р становится неопределенным.
3. Процедура GetMem(varp: Pointer; size: Word).
Выделяет участок памяти в heap-области, присваивает адрес его начала указателю р, размер участка в байтах задается параметром size.
4. Процедура FreeMem(var p: Pointer; size: Word).
Освобождает участок памяти, адрес начала которого определен указателем р, а размер – параметром size. Значение указателя р становится неопределенным.
5. Процедура Mark(var p: Pointer)
Записывает в указатель р адрес начала участка свободной динамической памяти на момент ее вызова.
6. Процедура Release(var p: Pointer)
Освобождает участок динамической памяти, начиная с адреса, записанного в указатель р процедурой Mark, т. е. очищает ту динамическую память, которая была занята после вызова процедуры Mark.
7. Функция MaxAvaikLongint
Возвращает длину в байтах самого длинного свободного участка динамической памяти.
8. Функция MemAvaikLongint
Возвращает полный объем свободной динамической памяти в байтах.
9. Вспомогательная функция SizeOf(X):Word
Возвращает объем в байтах, занимаемый X, причем X может быть либо именем переменной любого типа, либо именем типа.
Встроенный тип Pointer обозначает нетипизированный указатель, т. е. указатель, который не указывает ни на какой определенный тип. Переменные типа Pointer могут быть разыменованы: указание символа ^ после такой переменной вызывает появление ошибки.
Как и значение, обозначаемое словом nil, значения типа Pointer совместимы со всеми другими типами указателей.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
Понятие статической и динамической веб-страницы
Понятие статической и динамической веб-страницы Ранее мы уже кратко говорили о том, что представляют собой статические и динамические веб-страницы. В данном же разделе мы рассмотрим этот вопрос более детально.Название статической страницы говорит само за себя: на такой
Делаем статистику динамической
Делаем статистику динамической Итак, мы узнали, как подготовить внешний JavaScript-файл к динамической загрузке. Осталось понять, как теперь это использовать.Основное преимущество (или недостаток?) Omniture заключается в том, что JavaScript-файл (обычно s_code.js) располагается на нашем
Функции динамической загрузки
Функции динамической загрузки dlЗагрузка библиотеки расширения PHP во время выполнения.Синтаксис:int dl(string library);dl("extensions/php_db.dll");Загружает PHP расширение определенное в library.get_loaded_extensionsОпределения перечня загруженных модулей.Синтаксис:array get_loaded_extensions(void);Возвращает массив,
18.1.3. Управление памятью
18.1.3. Управление памятью Управление памятью осуществляется с помощью параметра mem: mem=Определяет объем памяти, установленной в компьютере.Например: mem=16384K или mem=16M.Иногда нужно указать объем ОЗУ, отличный от того, который имеется на самом деле. Например, у вас чипсет Intel 810 с
1.4. Сборка динамической библиотеки из командной строки
1.4. Сборка динамической библиотеки из командной строки ПроблемаВы хотите использовать свои инструменты командной строки для сборки динамической библиотеки из набора исходных файлов С++, таких как перечисленные в примере 1.2.РешениеВыполните следующие шаги.1. Используйте
1.9. Сборка динамической библиотеки с помощью Boost.Build
1.9. Сборка динамической библиотеки с помощью Boost.Build ПроблемаВы хотите использовать Boost.Build для сборки динамической библиотеки из набора исходных файлов С++, таких как перечисленные в примере 1.2.РешениеВ директории, где вы хотите создать динамическую библиотеку и, если
1.12. Сборка динамической библиотеки с помощью IDE
1.12. Сборка динамической библиотеки с помощью IDE ПроблемаВы хотите использовать IDE для сборки динамической библиотеки из набора исходных файлов С++, таких как перечисленные в примере 1.2.РешениеОсновная процедура выглядит следующим образом.1. Создайте новый проект и
11.14. Реализация динамической матрицы
11.14. Реализация динамической матрицы ПроблемаТребуется реализовать числовые матрицы, размерности которых (количество строк и столбцов) неизвестны на этапе компиляции.РешениеВ примере 11.28 показана универсальная и эффективная реализация класса динамической матрицы,
Шаг 18 - Управление памятью.
Шаг 18 - Управление памятью. Больше нет возможности обходить эту тему. Это слишком важно. Долго не хотел браться за нее, но она сама взялась за меня.В управлении памятью одна из самых больших проблем (для меня) состоит в том,что у авторов книг по C++ в этом месте случается как бы
А.2. Поиск ошибок в динамической памяти
А.2. Поиск ошибок в динамической памяти При написании программы зачастую неизвестно, сколько памяти потребуется ей во время выполнения. Например, строка, читаемая из файла, может иметь любую длину. Работа с динамической памятью осуществляется посредством функций malloc(),
А.2.1. Программа для тестирования динамической памяти
А.2.1. Программа для тестирования динамической памяти Программа malloc-use, приведенная в листинге А.2, позволяет тестировать операции выделения, освобождения и обращения к памяти. Единственный аргумент командной строки задает максимальное число выделяемых буферов. Например,
Режим с динамической компоновкой
Режим с динамической компоновкой Особенности режима с динамической компоновкойКак было отмечено выше, с помощью кнопки быстрого доступа Режим" и связанной с ней клавиши F4 можно осуществлять переключение между двумя режимами окна задачника: традиционного режима с
Аргументы в пользу динамической типизации
Аргументы в пользу динамической типизации Несмотря на все это, динамическая типизация не теряет своих приверженцев, в частности, среди Smalltalk-программистов. Их аргументы основаны прежде всего на реализме, речь о котором шла выше. Они уверены, что статическая типизация
16. Ссылочный тип данных. Динамическая память. Динамические переменные. Работа с динамической памятью
16. Ссылочный тип данных. Динамическая память. Динамические переменные. Работа с динамической памятью Статической переменной (статически размещенной) называется описанная явным образом в программе переменная, обращение к ней осуществляется по имени. Место в памяти для