C++: библиотека программиста



Download 1,95 Mb.
Pdf ko'rish
bet107/144
Sana24.02.2022
Hajmi1,95 Mb.
#223123
TuriРеферат
1   ...   103   104   105   106   107   108   109   110   ...   144
Bog'liq
C -Eldjer-Djeff-for-Real-Programmers-RUS-www.itlibitum.ru


Часть 



Перегрузка 
операторов 
управления 
памятью 
Давайте отдохнем от указателей и поговорим об управлении памятью. Говорят, типичный программист 
на С++ (если он вообще существует) тратит 50 процентов своего рабочего времени на управление 
памятью. Когда удалять объект? Как гарантировать, что старый адрес объекта нигде не останется после 
его уничтожения? Как добиться приличного быстродействия от популярных классов со стандартной 
схемой управления памятью, которую компилятор использует на все случаи жизни? В отличие от таких 
языков, как SmallTalk и Lisp, стандартные средства С++ не окажут вам особой помощи в этом вопросе. 
К счастью, в С++ имеется несколько прекрасных «лазеек»; тот, кто сумеет найти эти обходные пути, 
при необходимости всегда сможет добиться хорошего быстродействия, а по возможностям управления 
памятью — осмелюсь ли я произнести это вслух? — его программа не уступит SmallTalk. 
Управление памятью — одна из самых мистических тем в компьютерных технологиях; то, над чем 
бьются выдающиеся умы в великих университетах. Я не претендую на глубокое освещение темы в 
целом. В оставшейся части книги мы посмотрим, как синтаксис и идиомы С++ помогают построить 
основу для подключения тех алгоритмов и структур данных, которые вы захотите реализовать. Тем не 
менее, даже краткие примеры из этой и следующей главы могут пригодиться на практике, если ваша 
задача не отличается особой сложностью. 
Глава начинается с самого важного — перегрузки операторов 
new
и 
delete
. Затем мы рассмотрим 
несколько упрощенных, но очень полезных приемов управления памятью в С++. В последующих 
главах описываются нетривиальные методы, основанные на идеях этой главы. 
Перегрузка операторов new и delete 
Многие удивляются тому, что операторы 
new
и 
delete
можно перегружать, как и все остальные 
операторы. Понять, как это делается, проще всего на примере. 
Простой список свободной памяти 
Рассмотрим простой пример. Оператор 
delete
включает освобождаемые блоки в список свободной 
памяти. Оператор 
new
сначала пытается выделить блок из списка и обращается к глобальному 
оператору 
new
лишь в том случае, если список свободной памяти пуст. 
class Foo { 
private: 
struct 
FreeNode 

FreeNode* 
next; 
}; 
static FreeNode* fdFreeList; 

Download 1,95 Mb.

Do'stlaringiz bilan baham:
1   ...   103   104   105   106   107   108   109   110   ...   144




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish