Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«C++Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 19

Автор ΠœΡŽΡ€Ρ€Π΅ΠΉ Π₯ΠΈΠ»Π»

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ приращСния особСнно ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ для увСличСния ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² Ρ†ΠΈΠΊΠ»Π°Ρ…. НапримСр, ΠΎΠΊΠ°Π½Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΡƒΡŽΡΡ Π½Π»Π΅ΠΌ строку ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ:

inline void cpy(char* p, const char* q) (* while (*p++ = *q++) ; *)

Напомню, Ρ‡Ρ‚ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΠ΅ арифмСтичСских ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ, Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ слоТСниС ΠΈ Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠ΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ, осущСствляСтся Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ… элСмСнтов Π²Π΅ΠΊΡ‚ΠΎΡ€Π°, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ p++ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ p ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ элСмСнт. Для указатСля p Ρ‚ΠΈΠΏΠ° T* ΠΏΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡŽ выполняСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

long(p+1) == long(p)+sizeof(T);

3.2.4 ΠŸΠΎΠ±ΠΈΡ‚ΠΎΠ²Ρ‹Π΅ логичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ

ΠŸΠΎΠ±ΠΈΡ‚ΠΎΠ²Ρ‹Π΅ логичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ

amp; ! ^ ~ »» ««

ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΠΊ Ρ†Π΅Π»Ρ‹ΠΌ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ Ρ‚ΠΈΠΏΠ° char, short, int, long ΠΈ ΠΈΡ… unsigned Π°Π½Π°Π»ΠΎΠ³Π°ΠΌ, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Ρ‚ΠΎΠΆΠ΅ Ρ†Π»Ρ‹Π΅.

Одно ΠΈΠ· стандартных ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΏΠΎΠ±ΠΈΡ‚ΠΎΠ²Ρ‹Ρ… логичСских ΠΎΠΏΡ€Π°Ρ†ΠΈΠΉ – рСализация малСнького мноТСства (Π²Π΅ΠΊΡ‚ΠΎΡ€ Π±ΠΈΡ‚ΠΎΠ²). Π’ этом случаС ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π±ΠΈΡ‚ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ Ρ†Π΅Π»ΠΎΠ³ΠΎ прСдставляСт ΠΎΠ΄ΠΈΠ½ Ρ‡Π»Π΅Π½ мноТСства, Π° число Ρ‡Π»Π΅Π½ΠΎΠ² ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΎ числом Π±ΠΈΡ‚ΠΎΠ². Бнарная опСрация amp; интСрпрСтируСтся ΠΊΠ°ΠΊ пСрСсСчСниС, ! ΠΊΠ°ΠΊ объСдинСниС, Π° ^ ΠΊΠ°ΠΊ Ρ€Π°Π·Π½ΠΎΡΡ‚ΡŒ. Для наимСнования Ρ‡Π»Π΅Π½ΠΎΠ² Ρ‚Π°ΠΊΠΎΠ³ΠΎ мноТСства ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ пСрСчислСниС. Π’ΠΎΡ‚ малСнький ΠΏΡ€ΠΌΠ΅Ρ€, заимствованный ΠΈΠ· Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ (Π½Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ итСрфСйса) Β«stream.hΒ»:

enum state_value (* _good=0, _eof=1, _fail=2, _bad=4 *); // Ρ…ΠΎΡ€ΠΎΡˆΠΎ, ΠΊΠΎΠ½Π΅Ρ† Ρ„Π°ΠΉΠ»Π°, ошибка, ΠΏΠ»ΠΎΡ…ΠΎ

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ _good Π½Π΅ являСтся Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΌ. Π― просто Ρ…Ρ‚Π΅Π», Ρ‡Ρ‚ΠΎΠ±Ρ‹ состояниС, ΠΊΠΎΠ³Π΄Π° всС Π² порядкС, ΠΈΠΌΠ΅Π»ΠΎ подходящСС имя. БостояниС ΠΏΠΎΡ‚ΠΎΠΊΠ° ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π·Π°Π½ΠΎΠ²ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π·ΠΎΠΌ:

cout.state = _good;

НапримСр, Ρ‚Π°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, Π½Π΅ Π±Ρ‹Π» Π»ΠΈ испорчСн ΠΏΠΎΡ‚ΠΎΠΊ ΠΈΠ»ΠΈ Π΄ΠΎΠΏΡƒΡ‰Π΅Π½Π° опСрационная ошибка:


if (cout.state amp;(_bad!_fail)) // Π½Π΅ good

Π•Ρ‰Π΅ ΠΎΠ΄Π½ΠΈ скобки Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ amp; ΠΈΠΌΠ΅Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ всокий ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚, Ρ‡Π΅ΠΌ !.

Ѐункция, Π΄ΠΎΡΡ‚ΠΈΠ³Π°ΡŽΡ‰Π°Ρ ΠΊΠΎΠ½Ρ†Π° Π²Π²ΠΎΠ΄Π°, ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠΎΠ±Ρ‰Π°Ρ‚ΡŒ ΠΎΠ± этом Ρ‚Π°ΠΊ:

cin.state != _eof;

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ != ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΡ‚ΠΎΠΊ ΡƒΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ испорчСн (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ, state==_bad), поэтому

cin.state = _eof;

очистило Π±Ρ‹ этот ΠΏΡ€ΠΈΠ·Π½Π°ΠΊ. Π Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ Π΄Π²ΡƒΡ… ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊ:

state_value diff = cin.state^cout.state;

Π’ случаС Ρ‚ΠΈΠΏΠ° stream_state (состояниС ΠΏΠΎΡ‚ΠΎΠΊΠ°) такая Ρ€Π°Π½ΠΎΡΡ‚ΡŒ Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ Π½ΡƒΠΆΠ½Π°, Π½ΠΎ для Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠΎΡ…ΠΎΠΆΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² ΠΎΠ½Π° оказваСтся самой ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ. НапримСр, ΠΏΡ€ΠΈ сравнСнии Π²Π΅ΠΊΡ‚ΠΎΡ€Π° Π±ΠΈΡ‚, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅Π³ΠΎ мноТСство ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ, с Π΄Ρ€ΡƒΠ³ΠΈΠΌ, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΌ прСрывания, ΠΆΠ΄ΡƒΡ‰ΠΈΠ΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ использованиС ΠΏΠΎΠ»Π΅ΠΉ (#2.5.1) Π² Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ являСтся сокращСнной записью сдвига ΠΈ маскрования для извлСчСния ΠΏΠΎΠ»Π΅ΠΉ Π±ΠΈΡ‚ ΠΈΠ· слова. Π­Ρ‚ΠΎ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΌΠΎΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠΎΠ±ΠΈΡ‚ΠΎΠ²Ρ‹Ρ… логичСских ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, НапримСр, ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ срСдниС 16 Π±ΠΈΡ‚ ΠΈΠ· 32-Π±ΠΈΡ‚ΠΎΠ²ΠΎΠ³ΠΎ int ΠΌΠΎΠΆΠ½ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

unsigned short middle(int a) (* return (a»»8) amp;0xffff; *)

НС ΠΏΡƒΡ‚Π°ΠΉΡ‚Π΅ ΠΏΠΎΠ±ΠΈΡ‚ΠΎΠ²Ρ‹Π΅ логичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с логичСскими опСрациями:

amp; amp; !! !

ПослСдниС Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ 0 ΠΈΠ»ΠΈ 1, ΠΈ ΠΎΠ½ΠΈ Π³Π»Π°Π²Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΈΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для записи ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°Ρ… if, while ΠΈΠ»ΠΈ for (#3.3.1). НапримСр, !0 (Π½Π΅ ноль) Π΅ΡΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 1, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ ~ 0 (Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ нуля) Π΅ΡΡ‚ΡŒ Π½Π°Π±ΠΎΡ€ Π±ΠΈΡ‚ΠΎΠ² всС-Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ являСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ -1.

3.2.5 ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ°

Π‘Ρ‹Π²Π°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ явно ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΏΠ° Π² Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ. Π―Π²Π½ΠΎΠ΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° Π΄Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° для Π΄Π°Π½Π½ΠΎΠ³ΠΎ значСния Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°. НапримСр:

float r = float(1);

ΠΏΠ΅Ρ€Π΅Π΄ присваиваниСм ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ Ρ†Π΅Π»ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 1 ΠΊ Π·Π½Ρ‡Π΅Π½ΠΈΡŽ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ 1.0. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ прСобразования Ρ‚ΠΈΠΏΠ° Π½Π΅ являСтся lvalue, поэтому Π΅ΠΌΡƒ нСльзя ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Ρ‚ΡŒ (Ссли Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΈΠΏ Π½Π΅ являСтся ссылочным Ρ‚ΠΈΠΏΠΎΠΌ).

Π•ΡΡ‚ΡŒ Π΄Π²Π° способа записи явного прСобразования Ρ‚ΠΈΠΏΠ°: трдиционная Π² C запись привСдСния ΠΊ Ρ‚ΠΈΠΏΡƒ (double)a ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ½Π°Π»ΡŒΠ½Π°Ρ запись double(a). Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ запись Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ для Ρ‚ΠΈΠΏΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ простого ΠΈΠΌΠ΅Π½ΠΈ. НапримСр, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ Ρ‚ΠΈΠΏΡƒ Π½Π°Π΄ΠΎ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ запись прСобразования Ρ‚ΠΈΠΏΠ°

char* p = (char*)0777;


ΠΈΠ»ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½ΠΎΠ²ΠΎΠ΅ имя Ρ‚ΠΈΠΏΠ°:

typedef char* Pchar; char* p = Pchar(0777);

По ΠΌΠΎΠ΅ΠΌΡƒ мнСнию, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ запись Π² Π½Π΅Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… случаях ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π°. Рассмотрим Π΄Π²Π° эквивалСнтных ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°

Pname n2 = Pbase(n1-Β»tp)-Β»b_name; //Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ запись Pname n3 = ((Pbase)n2-Β»tp)-Β»b_name; // запись привСдСния // ΠΊ Ρ‚ΠΈΠΏΡƒ ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ опСрация -Β» ΠΈΠΌΠ΅Π΅Ρ‚ больший ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚, Ρ‡Π΅ΠΌ ΠΏΡ€Π²Π΅Π΄Π΅Π½ΠΈΠ΅, послСднСС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ интСрпрСтируСтся ΠΊΠ°ΠΊ

((Pbase)(n2-Β»tp))-Β»b_name

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ явного прСобразования Ρ‚ΠΈΠΏΠ° ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Ρ‚ΠΏΠ°ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΈΠΌΠΈΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ ΠΏΡ€ΠΎΠΈΠ²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ Ρ‚ΠΈΠΏ. НапримСр:

any_type* p = (any_type*) amp;some_object;

ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ посрСдством p с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ some_object ΠΊΠ°ΠΊ с Π»ΡŽΠ±Ρ‹ΠΌ Ρ‚ΠΈΠΏΠΎΠΌ any_type.

Когда ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° Π½Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, Π΅Π³ΠΎ слСдуСт ΠΈΠ±Π΅Π³Π°Ρ‚ΡŒ. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ½ΠΎΠ³ΠΎ явных ΠΏΡ€Π΅ΠΎΡ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ Ρ‚ΠΈΠΏΠΎΠ², Ρ‚Ρ€ΡƒΠ΄Π½Π΅Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Π΅ΠΌ Ρ‚Π΅, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… это Π½Π΅ дСлаСтся. Однако Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π»Π΅Π³Ρ‡Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Π΅ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, просто Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ для прСдставлСния понятий Π±Π»Π΅Π΅ высокого уровня (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ рСгистром устройства с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ сдвига ΠΈ маскирования, вмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΡΡ‰ΡƒΡŽ struct ΠΈ ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Сю, см. #2.5.2). ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ явного прСобразования Ρ‚ΠΈΠΏΠ° часто критичСским ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ зависит ΠΎΡ‚ понимания програмистом Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Π²Π°ΡŽΡ‚ΡΡ Π² языкС, ΠΈ ΠΎΡ‡Π΅Π½ΡŒ часто ΠΎΡ‚ подробностСй Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. НапримСр:

int i = 1; char* pc = Β«asdfΒ»; int* pi = amp;i;

i = (int)pc; pc = (char*)i; // ΠΎΡΡ‚Π΅Ρ€Π΅Π³Π°ΠΉΡ‚Π΅ΡΡŒ! Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ pc ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌ//Π½ΠΈΡ‚ΡŒΡΡ // Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠ°ΡˆΠΈΠ½Π°Ρ… // sizeof(int)Β«sizeof(char*) pi = (int*)pc; pc = (char*)pi; // ΠΎΡΡ‚Π΅Ρ€Π΅Π³Π°ΠΉΡ‚Π΅ΡΡŒ! Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ pc ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌ// Π½ΠΈΡ‚ΡŒΡΡ // Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠ°ΡˆΠΈΠ½Π°Ρ… char* // прСдставляСтся ΠΈΠ½Π°Ρ‡Π΅, Ρ‡Π΅ΠΌ int*

На ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΌΠ°ΡˆΠΈΠ½Π°Ρ… Π½ΠΈΡ‡Π΅Π³ΠΎ ΠΏΠ»ΠΎΡ…ΠΎΠ³ΠΎ Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚, Π½ΠΎ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ катастрофичСскими. Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ Π² Π»ΡƒΡ‡ΡˆΠ΅ΠΌ случаС нСпСрСносим. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±Π΅Π· риска ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ структуры ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ΅ прСдставлниС. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, любой ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ½ΠΎ (Π±Π΅Π· явного прСобразвания Ρ‚ΠΈΠΏΠ°) ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ void*, Π° void* ΠΌΠΎΠΆΠ½ΠΎ явно ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ любого Ρ‚ΠΈΠΏΠ°.

Π’ Π‘++ явноС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° оказываСтся Π½Π΅Π½ΡƒΠΆΠ½Ρ‹ΠΌ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… случаях, ΠΊΠΎΠ³Π΄Π° C (ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ языки) Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ Π΅Π³ΠΎ. Π’ΠΎ ΠΌΠ½Π³ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… явного прСобразования Ρ‚ΠΈΠΏΠ° ΠΌΠΎΠΆΠ½ΠΎ совсСм ΠΈΠ·Π±ΠΆΠ°Ρ‚ΡŒ, Π° Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ… Π΅Π³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΎΠΊΠ°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²

нСбольшом числС ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ.

3.2.6 Бвободная ΠΏΠ°ΠΌΡΡ‚ΡŒ

Π˜ΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ являСтся Π»ΠΈΠ±ΠΎ статичСским, Π»ΠΈΠ±ΠΎ автоматичСским (см. #2.1.3). БтатичСский ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ размСщаСтся Π²ΠΎ врСмя запуска ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ сущСствуСт Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ всСго выполнния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. АвтоматичСский ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ размСщаСтся ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΠΏΡ€ΠΈ Π²Ρ…ΠΎΠ΄Π΅ Π² Π΅Π³ΠΎ Π±Π»ΠΎΠΊ ΠΈ сущСствуСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° ΠΈΠ· этого Π±Π»ΠΎΠΊΠ° Π½Π΅ Π²Ρ‹ΡˆΠ»ΠΈ. Однако часто Π±Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½Π²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° ΠΎΠ½ Π½Π΅ станСт большС Π½Π΅ Π½ΡƒΠΆΠ΅Π½. Π’ частности, часто ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ послС Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π³Π΄Π΅ ΠΎΠ½ создаСся. Π’Π°ΠΊΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ создаСт опСрация new, Π° впослСдствии ΡƒΠ½ΠΈΡ‚ΠΎΠΆΠ°Ρ‚ΡŒ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ delete. ΠŸΡ€ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ new, говорят, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π² свободной памяти. Π’Π°ΠΊΠΈΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ Π΄Π΅Ρ€Π΅Π²ΡŒΠ΅Π² ΠΈΠ»ΠΈ элСмСты связанных списков, ΡΠ²Π»ΡΡŽΡ‰ΠΈΠ΅ΡΡ Ρ‡Π°ΡΡ‚ΡŒΡŽ большСй структуры Π΄Π°Π½Π½Ρ‹Ρ…, Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ извСстСн Π½Π° стадии копиляции. Рассмотрим, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ компилятор Π² Π΄ΡƒΡ…Π΅ написанного Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π°. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ синтаксчСского Π°Π½Π°Π»ΠΈΠ·Π° ΠΌΠΎΠ³ΡƒΡ‚ ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π΄Ρ€Π΅Π²ΠΎΠ²ΠΈΠ΄Π½ΠΎΠ΅ прСдставлСниС Π²Ρ‹Ρ€ΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π°. НапримСр:

struct enode (* token_value oper; enode* left; enode* right; *);

enode* expr() (* enode* left = term();

for(;;) switch(curr_tok) (* case PLUS: case MINUS: get_token(); enode* n = new enode; n-Β»oper = curr_tok; n-Β»left = left; n-Β»right = term(); left = n; break; default: return left; *) *)

ΠŸΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‰Π΅Π΅ΡΡ Π΄Π΅Ρ€Π΅Π²ΠΎ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΊΠΎΠ΄Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚Π°ΠΊ:

void generate(enode* n) (* switch (n-Β»oper) (* case PLUS: // Π΄Π΅Π»Π°Π΅Ρ‚ Π½Π΅Ρ‡Ρ‚ΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ delete n; *) *)

ΠžΠ±ΡŠΠ΅ΠΊΡ‚, созданный с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ new, сущСствуСт, ΠΏΠΎΠΊΠ° ΠΎΠ½ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ явно ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½ delete, послС Ρ‡Π΅Π³ΠΎ пространство, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΎΠ½ Π·Π°Π½ΠΈΠΌΠ°Π», ΠΎΠΏΡΡ‚ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ new. Никакого «сборщка мусора», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡ‰Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅Ρ‚ ссылок, ΠΈ прСдоставляСт ΠΈΡ… Π² распоряТСниС new, Π½Π΅Ρ‚. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ delete ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ new, ΠΈΠ»ΠΈ ΠΊ Π½ΡƒΠ»ΡŽ. ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ delete ΠΊ Π½ΡƒΠ»ΡŽ Π½Π΅ Π²Ρ‹Π·Π²Π°Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… дСйствий.

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ new ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π²Π΅ΠΊΡ‚ΠΎΡ€Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². НапримСр:

char* save_string(char* p) (* char* s = new char[strlen(p)+1]; strcpy(s,p); return s; *)

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡ‚ΡŒ пространство, Π²Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ new, delete Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. НапримСр:

int main(int argc, char* argv[]) (* if (argc Β« 2) exit(1); char* p = save_string(argv[1]); delete p; *)

Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ стандартной Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ new, Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ большС мСста, Ρ‡Π΅ΠΌ статичСский ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ, большС Π½Π° ΠΎΠ΄Π½ΠΎ слово).

МоТно Ρ‚Π°ΠΊΠΆΠ΅ явно ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π²Π΅ΠΊΡ‚ΠΎΡ€Π° Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ уничтоТСния delete. НапримСр:

int main(int argc, char* argv[]) (* if (argc Β« 2) exit(1); int size = strlen(argv[1])+1; char* p = save_string(argv[1]); delete[size] p; *)

Π—Π°Π΄Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π²Π΅ΠΊΡ‚ΠΎΡ€Π° игнорируСтся Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ², опрСдСляСмых ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ (#5.5.5).

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ свободной памяти Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ΡΡ функциями (#с.7.2.3):

void operator new(long); void operator delete(void*);