Vi fəsil. C++ dilində proqramlaşdırma


New və delete operatorları



Yüklə 1,02 Mb.
səhifə36/74
tarix04.01.2023
ölçüsü1,02 Mb.
#121980
1   ...   32   33   34   35   36   37   38   39   ...   74
Alqoritmik dillər(C kitab) (10)

6.28.New və delete operatorları
C-dilində dinamik yaddaşın ayrılması və azad olunması üçün Malloc( )free( ) funksiyaları istifadə edilir. C++ dilində dinamik yaddaşın ayrılması və azad olunması üçün daha əlverişli və təhlükəsiz üsullar tətbiq edilir. Dinamik yaddaşı ayırmaq üçün new operatorunda, dinamik yaddaşı azad etmək üçün delete operatorundan istifadə edilir.
Bu operatorların formatı aşağıdaki kimidir:
prav=new type;
delete prav;
Burada type-yaddaş sahəsi ayrılan obyektin tipinin spesfikatorudur, prav-bu tipə olan göstəricidir. New-type tipli obyekti saxlamaq üçün ayrılan dinamik yaddaşın göstəricisini müəyyən edir. Delete isə ayrılan dinamik yaddaşı azad edir. Düzgün olmayan göstəricidən istifadə edilməsi nəticəsində ayrılan dinamik yaddaş sahəsi korlana bilər.
Əgər ayrılan yaddaş sahəsi tələbi ödəmirsə, onda kompilyatordan asılı olaraq iki haldan biri olar:

  1. new operatoru sıfır göstəriciyə malik qiymət qaytarır.

  2. və ya müstəsna hal generasiya edir, yəni dinamik səhv müəyyən edilir.


Misal 1.
Tam ədədi saxlamaq üçün yaddaşın ayrılmasına baxaq.
//new və delete operatorlarına aid sadə missal
#include ;
using namespace std;
{int*p;
p=new int;
//tam ədəd üçün yaddaşın ayrılması
if(!p){cout<<”Yaddaşın ayrılmasında səhv var \n”;
return 1;
}
*p=1000;
cout<<”Bu p-nın göstərdiyi tam ədəddir:”<<*p<<”\n”;
delete p;

//yaddaş azad olunur


return 0;
}
Göründüyü kimi, new operatorunun qaytardığı qiymət istifadə olunmazdan əvvəl yoxlanılır. Yuxarıda göstərildiyi kimi bu yoxlama o zaman əhəmiyyətlidir ki, yaddaşın ayrılması zamanı kompilyator sıfır göstərici qaytarsın.

New və Delete operatorlarının əlavə xassələri
Newdelete operatorlarının əlavə 2 xassəsi vardır. Birincisi dinamik obyektlərə başlanğıc qiymətlər vermək mümkündür. İkinci, dinamik massivlər yaratmaq mümkündür.
New-operatorunun aşağıdaki formatından isitifadə edərək dinamik obyektlərə başlanğıc qiymətlər vermək mümkündür:
Pvar=new type(başlanğıc qiymət);
Bir ölçülü dinamik massiv üçün new-operatorunu aşağıdaki kimi yazılır:
Prav=new type[size]
Bu operator yerinə yetirildikdə pvar size ölçülü massivin başlanğıc elementini göstərir. Texniki səbəblərə görə dinamik massivə başlanğıc qiymətlər vermək mümkün deyildir.

Dinamik massivi silmək üçün


delete[ ]pvar;
-yazmaq lazımdır.

Yüklə 1,02 Mb.

Dostları ilə paylaş:
1   ...   32   33   34   35   36   37   38   39   ...   74




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©muhaz.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin