52
int* m = new int (10);
// 2
int* q = new int [10]; // 3
□ malloc
1
функциясының көмегімен:
int* u = (int *)malloc(sizeof(int)); // 4
Жоғарыдағы мысалдың
1
операторындағы
new
операциясы
int
типіндегі
шаманы орналастыруға жеткілікті болатын динамикалық жады аймағын
бөліп, осы аймақтың бастапқы адресін
n
айнымалысында сақтауды орын-
дайды. Ал
n
айнымалысының өзіне жады бөлу (нұсқауышты орналастыруға
жеткiлiктi көлемде орын беру) программаны компиляциядан өткізу кезеңінде
орындалады.
2
операторында (жоғарыда аталған əрекеттерден басқа) қосымша бөлінген
динамикалық жадыны 10 мəнімен инициалдау жүзеге асырылады.
3
операторындағы
new
операциясы
int
типті 10 санға (10 элемент-
тен тұратын жиым) арналған жады бөлу ісін орындайды жəне осы жады
аймағының бастапқы адресін жиымның атауы ретінде қарастыруға болатын
q
айнымалысына жазып қояды. Жиымның атын қолдану арқылы оның кез кел-
ген элементін пайдалануға болады. Жиымдар туралы 57 б. қараңыз.
Егер жады бөлу əрекетін орындау мүмкін болмаса, онда стандарт бойынша
bad_alloc
ерекше операциясы туындауы тиіс (олар туралы «Аластамаларды
өңдеу» бөлімінде – 240 б., ал жады бөлу кезіндегі қателіктер туралы 412 б.
мəліметтер берілген).
4
операторда дəл
1
оператордағы сияқты əрекеттер орындалады, бiрақ олар
С кiтапханасынан мұраланған
malloc
жады бөлу функциясының көмегімен
атқарылады. Функциға тек бiр параметр – бөлінетін жады көлемі байтпен
беріледі.
(int*)
конструкциясы нұсқауыштың функциядан қайтарылатын
типін қажетті типке түрлендіру үшiн қолданылады (типтерді айқын түрде
түрлендіру туралы 249 б. қараңыз). Егер жады бөлу мүмкін болмаса, онда
функция 0 мəнін қайтарады.
Достарыңызбен бөлісу: