new delete operators c with examples
Raziščite vse o novih / izbriši operaterje v C ++.
V naših prejšnjih vajah smo že videli spremenljivke in statične nize v jeziku C ++.
Kar zadeva pomnilnik, dodeljen spremenljivkam in nizom, je prevajalnik dodeljen statičnemu pomnilniku, odvisno od vrste podatkov (v primeru spremenljivk) in dimenzij, predvidenih za polja.
Pomnilnik, ki ga dodeli prevajalnik, je dodeljen v sklad. Toda v večini primerov se morda ne zavedamo natančne količine pomnilnika, ki ga potrebujemo.
=> Tukaj preberite priljubljeno serijo usposabljanj za C ++
Kar bi storili, je, da dodelimo in odstranimo toliko pomnilnika, kolikor želimo, pa tudi ko in kdaj ga želimo. To se naredi z dinamičnim dodeljevanjem pomnilnika. V nasprotju s statično dodelitvijo je na kupu razporejen dinamično dodeljen pomnilnik.
Dinamično dodeljevanje pomnilnika je koristno, saj lahko dodelimo pomnilnik spremenljive velikosti, ki ga z dodeljenim pomnilnikom prevajalnika ne moremo doseči. Imamo prilagodljivost pri dodeljevanju pomnilnika, ko ga potrebujemo, in razporejanju, ko ga ne potrebujemo.
Toda poleg teh uporab moramo upoštevati tudi, da je v primeru dinamično dodeljenega pomnilnika uporabnik odgovoren za razporeditev pomnilnika. Če pozabimo odstraniti pomnilnik, to povzroči uhajanje pomnilnika, pri čemer se pomnilnik ne sprosti, dokler se program ne konča.
To lahko povzroči preveč pomnilnika in s tem resna ozka grla.
Kaj se boste naučili:
- Dinamično dodeljevanje pomnilnika
- 'Novi' operater
- Uporaba 'novega' operaterja z nizi
- Operator za brisanje
- Zaključek
- Priporočeno branje
Dinamično dodeljevanje pomnilnika
Jezik C uporablja funkcije 'malloc', 'calloc' in 'realloc' za dinamično dodeljevanje pomnilnika. Za dinamično dodeljevanje pomnilnika, ki je dinamično dodeljen s temi funkcijami, uporablja klic funkcije 'brezplačno'. Jezik C ++ podpira tudi te funkcije iz jezika C za dodeljevanje / razveljavitev pomnilnika.
Poleg teh funkcij C ++ uvaja dva nova operaterja, ki sta učinkovitejša za upravljanje dinamičnega pomnilnika. To sta operater 'new' za dodeljevanje pomnilnika in operator 'delete' za odstranjevanje pomnilnika.
V tej vadnici bomo izvedeli več o novih in brisalnih operaterjih v jeziku C ++.
'Novi' operater
Operator 'new' dodeli pomnilnik spremenljivki ali kateri koli drugi entiteti na kupu.
Splošna sintaksa operatorja 'new' je:
pointer_variable_of_data_type = new data type;
Zgoraj omenjeni podatkovni tip je lahko kateri koli veljaven podatkovni tip, ki ga podpira C ++. Lahko je vgrajen podatkovni tip ali kateri koli uporabniško določen podatkovni tip, vključno z razredi in strukturami.
Na primer,
prijetna vprašanja za intervjuje s spletnimi storitvami in odgovori za izkušene
int *ptr = NULL; ptr = new int();
V zgornjem primeru smo spremenljivko kazalca 'ptr' razglasili za celo število in jo inicializirali za nič. Nato z uporabo operaterja 'new' dodelimo pomnilnik spremenljivki 'ptr'. Če je na kupu na voljo pomnilnik, bo drugi stavek uspešen. Če pomnilnik ni na voljo, novi operater vrže izjemo “std :: bad_alloc”.
Zato je bolje, da pred uporabo te spremenljivke ali entitete v programu preverite, ali je novi operater uspešno dodelil pomnilnik.
Spremenljivke lahko inicializiramo tudi z novim operatorjem, kot sledi:
ptr = new int(10);
V zgornjem primeru je kazalna spremenljivka 'ptr' dodeljeni pomnilnik z novim operaterjem, hkrati pa je dodeljena vrednost 10. To je še en način inicializacije v jeziku C ++.
Uporaba 'novega' operaterja z nizi
Še ena uporaba operaterja 'new' je dodeljevanje pomnilnika za nize. Tu določimo število elementov, ki bodo dodeljeni matriki.
Primer dodelitve elementov matrike z uporabo operaterja 'new' je podan spodaj:
int* myarray = NULL; myarray = new int(10);
Tu novi operater dodeli 10 neprekinjenih elementov vrste integer kazalni spremenljivki myarray in vrne kazalec na prvi element myarray.
Operator za brisanje
Programer mora izrecno sprostiti pomnilnik, ki se dinamično dodeli z uporabo novega operaterja. V ta namen imamo na voljo operater “delete”.
Splošna sintaksa operaterja brisanja je:
delete pointer_variable;
Tako lahko sprostimo pomnilnik, dodeljen zgoraj navedeni spremenljivki ptr, na naslednji način:
delete ptr;
Ta stavek sprosti pomnilnik, dodeljen spremenljivki 'ptr', nazaj v pomnilniško področje.
Z operaterjem delete lahko sprostimo tudi pomnilnik, dodeljen nizom.
Na primer,pomnilnik, dodeljen gornji matriki myarray, se lahko sprosti na naslednji način:
delete() myarray;
Upoštevajte operator podpisa, ki se uporablja z operaterjem delete. To je zato, ker moramo, ko smo dodelili vrsto elementov, osvoboditi vse lokacije.
Namesto tega, če bi uporabili izjavo,
delete myarray;
Vemo, da myarray kaže na prvi element v matriki, zato bo zgornji stavek izbrisal samo prvi element polja. Uporaba podpisa “()” pomeni, da je spremenljivka, katere pomnilnik se sprosti, matrika in ves dodeljeni pomnilnik je treba sprostiti.
Spodnji primer programiranja prikazuje uporabo novih in brisalnih operaterjev v jeziku 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'< Izhod:
pomnilnik uspešno dodeljen
* ptr = 10
* var = 12
miarray vrednosti: 1 2 3 4 5 6 7 8 9 10
Posnetek zaslona za isto je spodaj.
najboljša spletna mesta za brezplačno gledanje anime

V zgornjem primeru kode smo pokazali uporabo operaterjev new in delete. Operator “new” smo uporabili za dodelitev pomnilnika za spremenljivko, polja in za inicializiranje druge spremenljivke z vrednostjo. Nato te entitete izbrišemo z operaterjem delete.
Zaključek
Pri standardnih vrstah podatkov gre predvsem za operaterje C ++ za nove in brisanje. Uporabnike lahko uporabimo tudi za brisanje uporabniških podatkovnih vrst kot razredov in struktur.
Več o uporabi teh operatorjev za ustvarjanje predmetov bomo izvedeli, ko se bomo učili objektno usmerjenega programiranja s pomočjo C ++.
=> Tukaj si oglejte vodnik za začetnike C ++.
Priporočeno branje
- Primeri aritmetičnih in logičnih operaterjev skripte lupine Unix
- MongoDB Posodobi in izbriši dokument s primeri
- Operaterji, tipi in primeri C ++
- Python operaterji
- Vadnica Python DateTime s primeri
- Izreži ukaz v Unixu s primeri
- Razvrstitev mehurčkov v jeziku C ++ s primeri
- Sintaksa ukaza Unix Cat, možnosti s primeri