new delete operators c with examples
Preskúmajte všetko o nových / odstránených operátoroch v C ++.
Premenné a statické polia sme už v C ++ videli v našich predchádzajúcich tutoriáloch.
Pokiaľ ide o pamäť pridelenú premenným a poliam, jedná sa o statickú pamäť, ktorá je alokovaná kompilátorom v závislosti od dátového typu (v prípade premenných) a dimenzií poskytovaných poliam.
Pamäť pridelená kompilátorom je pridelená na zásobníku. Ale vo väčšine prípadov si nemusíme byť vedomí presného množstva pamäte, ktorú potrebujeme.
=> Prečítajte si populárnu sériu školení C ++ tu.
Čo by sme robili, je alokovať a de-alokovať toľko pamäte, koľko chceme, a tiež kedy a kedy ju chceme. To sa deje dynamickým prideľovaním pamäte. Na rozdiel od statického prideľovania sa na hromadu prideľuje dynamicky pridelená pamäť.
Dynamické prideľovanie pamäte je užitočné, pretože môžeme alokovať pamäť s premenlivou veľkosťou, ktorú s alokovanou pamäťou kompilátora nemôžeme dosiahnuť. Máme flexibilitu prideľovania pamäte, keď to potrebujeme, a delokácie pamäte, keď ju nepotrebujeme.
Ale okrem týchto použití si musíme tiež uvedomiť, že v prípade dynamicky alokovanej pamäte je zodpovednosťou používateľa de-alokovať pamäť. Ak zabudneme de-alokovať pamäť, spôsobí to únik pamäte, pričom pamäť nie je uvoľnená, kým sa program neukončí.
To by mohlo mať za následok príliš veľké využitie pamäte a spôsobiť tak vážne úzke miesta.
Čo sa dozviete:
- Dynamické prideľovanie pamäte
- „Nový“ operátor
- Používanie „nového“ operátora s poľami
- Operátor odstránenia
- Záver
- Odporúčané čítanie
Dynamické prideľovanie pamäte
Jazyk C používa na dynamické prideľovanie pamäte funkcie „malloc“, „calloc“ a „realloc“. Na dynamické pridelenie pamäte pridelenej týmto funkciám sa používa volanie funkcie „zadarmo“. Jazyk C ++ tiež podporuje tieto funkcie z jazyka C na alokáciu / de-alokáciu pamäte.
Okrem týchto funkcií zavádza C ++ dva nové operátory, ktoré sú efektívnejšie pri správe dynamickej pamäte. Jedná sa o operátor „nový“ na prideľovanie pamäte a operátor „mazanie“ na zrušenie alokácie pamäte.
V tomto tutoriáli sa dozvieme viac o nových a mazaných operátoroch v jazyku C ++.
„Nový“ operátor
Operátor „nový“ alokuje pamäť pre premennú alebo inú entitu na halde.
Všeobecná syntax operátora „new“ je:
pointer_variable_of_data_type = new data type;
Vyššie uvedený dátový typ môže byť akýkoľvek platný dátový typ podporovaný v C ++. Môže to byť zabudovaný dátový typ alebo akýkoľvek používateľom definovaný dátový typ vrátane tried a štruktúr.
Napríklad,
ako vytvoriť pole reťazcov v jave
int *ptr = NULL; ptr = new int();
Vo vyššie uvedenom príklade sme deklarovali premennú ukazovateľa „ptr“ na celé číslo a inicializovali sme ju na hodnotu null. Potom pomocou operátora „new“ pridelíme pamäť premennej „ptr“. Ak je na halde k dispozícii pamäť, druhý príkaz bude úspešný. Ak nie je k dispozícii žiadna pamäť, potom nový operátor hodí výnimku „std :: bad_alloc“.
Pred použitím tejto premennej alebo entity v programe je preto lepšie skontrolovať, či je operátor úspešne alokovaný novým operátorom.
Môžeme tiež inicializovať premenné pomocou nového operátora nasledovne:
ptr = new int(10);
Vo vyššie uvedenom príklade je premenná ukazovateľa „ptr“ alokovaná pamäť pomocou nového operátora a zároveň je jej priradená hodnota 10. Toto je ďalší spôsob inicializácie v C ++.
Používanie „nového“ operátora s poľami
Ďalším použitím operátora „nový“ je alokácia pamäte pre polia. Tu určíme počet prvkov, ktoré sa majú prideliť pre pole.
Nižšie je uvedený príklad prideľovania prvkov poľa pomocou operátora „new“:
int* myarray = NULL; myarray = new int(10);
Nový operátor tu alokuje 10 súvislých prvkov typu integer do premennej ukazovateľa myarray a vráti ukazovateľ na prvý prvok myarray.
Operátor odstránenia
Pamäť dynamicky alokovaná pomocou nového operátora musí byť programátorom výslovne uvoľnená. Z tohto dôvodu sme vybavení operátorom „delete“.
Všeobecná syntax operátora mazania je:
delete pointer_variable;
Takže môžeme uvoľniť pamäť pridelenú vyššie premennej ptr nasledovne:
delete ptr;
Tento príkaz uvoľní pamäť pridelenú premennej „ptr“ späť do pamäťovej oblasti.
Môžeme tiež použiť operátor mazania na uvoľnenie pamäte pridelenej poliam.
ako zobraziť xml súbor
Napríklad,pamäť pridelená vyššie uvedenému poľu myarray sa dá uvoľniť nasledovne:
delete() myarray;
Všimnite si operátor dolného indexu používaný s operátorom mazania. Je to preto, že keďže sme pridelili pole prvkov, musíme uvoľniť všetky miesta.
Namiesto toho, keby sme použili vyhlásenie,
delete myarray;
Vieme, že myarray smeruje k prvému prvku v poli, takže vyššie uvedené vyhlásenie vymaže iba prvý prvok poľa. Použitím dolného indexu „()“ označuje, že premenná, ktorej pamäť sa uvoľňuje, je pole a má sa uvoľniť všetka pridelená pamäť.
Nasledujúci príklad programovania ukazuje použitie operátorov new a delete v C ++.
// Example program #include #include using namespace std; int main() { int *ptr = NULL; ptr = new int(); int *var = new int(12); if(!ptr) { cout<<'bad memory allocation'< Výkon:
pamäť úspešne pridelená
* ptr = 10
* var = 12
hodnoty myarray: 1 2 3 4 5 6 7 8 9 10
Screenshot toho istého je uvedený nižšie.

Vo vyššie uvedenom príklade kódu sme demonštrovali použitie operátorov new a delete. Použili sme operátor „nový“ na pridelenie pamäte pre premennú, polia a tiež na inicializáciu inej premennej s hodnotou. Potom tieto entity odstránime pomocou operátora delete.
Záver
Toto je všetko o nových a mazacích operátoroch C ++, pokiaľ ide o štandardné dátové typy. Môžeme tiež použiť nové a vymazať operátory pre používateľom definované dátové typy ako triedy a štruktúry.
Dozvieme sa viac o použití týchto operátorov na vytváranie objektov, keď sa naučíme objektovo orientované programovanie pomocou C ++.
=> Tu si pozrite príručku pre začiatočníkov v C ++.
Odporúčané čítanie
- Príklady aritmetických a boolovských operátorov Unix Shell Script
- Aktualizácia MongoDB a odstránenie dokumentu s príkladmi
- C ++ operátory, typy a príklady
- Operátory Pythonu
- Výukový program pre Python DateTime s príkladmi
- Vystrihnite príkaz v systéme Unix s príkladmi
- Bublinové triedenie v C ++ s príkladmi
- Syntax príkazov Unix Cat, možnosti s príkladmi