Программирование >>  Перегруженные имена функций и идентификаторы 

1 ... 52 53 54 [ 55 ] 56 57 58 ... 210


повторному вызову delete() для одного и того же указателя. Однако уничтожение с помощью delete указателя со значением ноль безвредно.

Предоставляются стандартные версии new() и delete(), но

пользователь может применять другие, более подходящие для конкретных приложений.

Когда с помощью операции new создается классовый объект, то для получения необходимой памяти конструктор будет (неявно) использовать new.

Конструктор может осуществить свое собственное резервирование памяти посредством присваивания указателю this до каких-либо использований.

С помощью присваивания this значения ноль деструктор может избежать стандартной операции дерезервирования памяти для объекта его класса.

Например:

class cl {

int v[10];

cl () { this = my own allocator

(sizeof (cl)); }

~cl () { my own deallocator

(this); this = 0; }

На входе в конструктор this является не-нулем, если резервирование памяти уже имело место (как это имеет место для автоматических объектов), и нулем в остальных случаях.

Если производный класс осуществляет присваивание this, то вызов конструктора (если он есть) базового класса будет иметь место после присваивания, так что конструктор базового класса ссылаться на объект посредством конструктора производного класса.

Если конструктор базового класса осуществляет присваивание this, то значение также будет использоваться конструктором (если таковой есть) производного класса.



Справочник по работе с DOS

Управление памятью в DOS

Нехватка памяти при выполнении

Borland С++ при компиляции не генерирует на диске никаких промежуточных структур данных (записывая на диск только файлы .OBJ). Вместо этого для хранения промежуточных структур данных между проходами используется оперативная память. Поэтому при недостаточном объеме оперативной памяти вам может выводиться сообщение о нехватке памяти. Чтобы решить эту проблему, уменьшите размер функций или разбейте файл с крупными функциями на несколько частей.

Модели памяти

В Borland С++ используется 6 моделей памяти, каждая из которых служит для различных размеров программ и кода.

Регистры процессора

Ниже представлены некоторые регистры процессоров. Эти процессоры имеют и другие регистры, но непосредственно к ним обращаться нельзя, поэтому они здесь не показаны.

Регистры общего назначения

Аккумулятор (математические операции)

AX AH AL

Базовый регистр (индексирование) BX BH BL

Счетчик (индексирование)

CX CH CL

Регистр данных DX DH DL

Сегментные адресные регистры

CS Сегментный регистр кода

DS Сегментный регистр данных



SS Указатель сегмента стека

ES Дополнительный регистр сегмента

Регистры общего назначения

SP Указатель стека

BP Указатель базы SI Индекс источника DI Индекс приемника

Общие регистры чаще всего используются для работы с данными. Каждый из них выполняет некоторые специальные функции, которые доступны только ему, например, некоторые математические операции могут использовать только регистр AX, регистр BX может служить базовым регистром, CX применяется инструкцией LOOP и некоторыми строковыми инструкциями, а DX используется некоторыми математическими операциями неявно. Однако во многих операциях можно использовать все эти регистры и заменять один из них на другой.

Сегментные регистры содержат начальный адрес каждого из 4 сегментов. 16-разрядное значение в сегментном регистре для получения 20-разрядного адреса сегмента сдвигается влево на 4 (умножается на 16).

Процессоры имеют также некоторые специальные регистры:

Регистры SI и DI могут выполнять многие функции общих регистров, но могут также использоваться в качестве индексных регистров. Они используются и в регистровых переменных Borland С++.

Регистр SP указывает на текущую вершину стека и представляет смещение в сегменте стека.

Регистр BP - это вспомогательный указатель стека, применяемый для индексирования в стеке с целью извлечения аргументов или локальных динамических переменных.

Функции Borland С++ используют регистр базы (BP) в качестве базового регистра для аргументов и переменных. Параметры имеют положительные смещения от BP, зависящие от модели памяти. При наличии кадра стека BP указывает на



1 ... 52 53 54 [ 55 ] 56 57 58 ... 210

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика