Erinevus uue ja malloki vahel ()

Autor: Laura McKinney
Loomise Kuupäev: 1 Aprill 2021
Värskenduse Kuupäev: 5 Mai 2024
Anonim
2 урок "Религия или Иисус" - Торбен Сондергаард.
Videot: 2 урок "Религия или Иисус" - Торбен Сондергаард.

Sisu


Uut ja malloc () kasutatakse mälu dünaamiliseks jaotamiseks. Kuigi uus ja malloc () erinevad paljudes miinuses. Peamine erinevus uue ja malloci () vahel on see uus on operaator, mida kasutatakse konstruktsioonina. Teisest küljest malloc () on standardne raamatukogu funktsioon, mida kasutatakse mälu eraldamiseks käitusel. Muid nendevahelisi erinevusi käsitletakse allpool võrdlustabelis:

  1. Võrdlusdiagramm
  2. Definitsioon
  3. Peamised erinevused
  4. Järeldus

Võrdlusdiagramm

Võrdluse alusuusmalloc ()
KeelUus operaator on C ++, Java ja C # eripära. Funktsioon malloc () on C tunnus.
Loodus"uus" on operaator.malloc () on funktsioon.
suurus ()uus ei vaja operaatori suurust, kuna sellel oleks konkreetse tüübi jaoks piisavalt mälu malloc nõuab operaatori suuruselt, et ta teaks, millise mälumahu see talle eraldab.
Konstruktor Uus operaator võib helistada objekti ehitajale.malloc () ei saa üldse konstruktorile helistada.
InitsialiseerimineUus operaator võiks objekti lähtestada, eraldades sellele mälu.Mälu lähtestamist ei õnnestunud mallokis teha.
Ülekoormamine Uus operaator võib olla üle koormatud.Malloci () ei saa kunagi üle koormata.
RikeRikke korral teeb uus operaator erandi.Rikke korral tagastab malloc () NULL-i.
JaotusMälu jaotamine uute kaupa, mis on eraldatud, kasutades kustutamist.Mälo eraldamine malloc () abil jagatakse vaba () funktsiooni kasutades.
ÜmberjaotamineUus operaator ei jaga mälu ümber.Malloc () poolt eraldatud mälu saab realloc () abil ümber jaotada.
HukkamineUus operaator vähendab täitmisaega.Malloc () nõuab täitmiseks rohkem aega.


Uue määratlus

Operaator uus on mälu jaotamise operaator, mis jaotab mälu dünaamiliselt. Uus operaator eraldab mälus hunnikusse ja tagastab selle mälu lähteaadressi, mis on määratud võrdlusmuutujale. Uus operaator sarnaneb malloc () -ga C. Kuid C ++ kompilaator ühildub malloc () -ga, kuid kõige parem on kasutada uut operaatorit, kuna sellel on Malloc () ees teatud eelised. Uue operaatori süntaks on järgmine:

tüüp muutuja_nimi = uus tüüp (parameetri_loend);

“Tüüp” tähistab siin muutuja andmetüüpi, mille jaoks mälu tuleb eraldada. Sõna “muutuja_nimi” on viide muutujale, mis hoiab kursorit mälus. Sulud täpsustavad siin konstruktori kutsumist. Parameeter_loend on väärtuste loetelu, mis edastatakse konstruktorile vastvalminud objekti initsialiseerimiseks.

Uus operaator eraldab konkreetset tüüpi objekti jaoks piisavalt mälu. Seega ei vaja see suuruse () operaatorit ega mälu suuruse muutmist nagu malloc (), mis kasutab mälu ümberpaigutamiseks realloc (). Uus operaator on konstruktsioon; see kutsub objekti ehitajat, samal ajal kui deklaratsiooni, mida tavaliselt kasutatakse objekti initsialiseerimiseks.


Me teame, et uus operaator eraldab mälus hunniku ja hunniku suurus on piiratud. Niisiis, kui hunnikul pole mälu ja uus operaator üritab mälu eraldada, põhjustab see uue operaatori rikke. Kui uus operaator mälu ei eralda, loobub see erandist ja kui teie kood ei suuda seda erandit käsitleda, lõpeb programm ebaharilikult.

Uue operaatori eraldatud mälu saab kustutamisoperaatori abil vabastada. Uus operaator katkestab täitmise aja, kuna see on operaator, mitte funktsioon.

Määratlus malloc ()

malloc () on funktsioon, mida kasutatakse soovitud mälumahu eraldamiseks kuhjaga. Meetod tagastab osuti „tühine”, mis on veelgi, kirjutage valatud, et saada kursor kindlaksmääratud tüüpi mällu ja see osutus mällu omistatakse võrdlusmuutujale. Funktsioon malloc () sarnaneb uue operaatoriga C ++, kuna seda kasutatakse mälu dünaamiliseks eraldamiseks. Malloc () on standardne raamatukogu funktsioon. Funktsiooni malloc () süntaks on järgmine:

tüüp muutuja_nimi = (tüüp *) malloc (suurusof (tüüp));

“Tüüp” tähistab siin muutuja andmetüüpi, mille jaoks mälu tuleb eraldada. Muutuja_nimi on võrdlusmuutuja nimi, millele malloci () tagastatud osuti omistatakse. (Tüüp *) kirjeldab tüübi ülekandmist, et saada kursor mälule konkreetset tüüpi. Suurusof () kirjeldab malloc (), et mälumaht on vajalik.

Malloc () nõuab tüübi ülekandmist, kuna malloc () tagastatud osuti on tühine tüüp, nii et osuti tüübi määramiseks on vaja tüüpi castingut. Suurusofoorum () on vajalik, kuna funktsioon malloc () eraldab töötlemata mälu, seetõttu tuleb funktsioonil malloc () öelda, et millise mälumahu see peab eraldama. Kui eraldatud mälu ei ole piisav, saab selle suurust muuta või ümber paigutada, kasutades realloc ().

Funktsioon malloc () eraldab mälu kuhjaga. Kui hunnikul pole mälu, tagastab funktsioon malloc () NULL-i kursori. Seega tuleks malloc () abil tagastatud osutit sisaldavat võrdlusmuutujat enne selle kasutamist kontrollida, muidu võib see põhjustada süsteemi krahhi.

Funktsiooni malloc () poolt eraldatud mälu jaotatakse kasutades vaba (). Kuna funktsioonikõne viib üldkuluni, nõuab malloc () täitmiseks rohkem aega.

  1. Uus operaator on konstruktsioon, mis on sisse viidud C ++ ja mida kasutatakse Java, C # jne. Teisest küljest on malloc () tavaline raamatukogu funktsioon, mis leitakse ainult C keeles ja mida toetab C ++.
  2. Uus operaator eraldab määratletud tüüpi objektile piisavalt mälu, nii et see ei vaja operaatori suurust. Teisest küljest nõuab malloc () funktsioon operaatoril sizeof (), et funktsioon teataks, millise mälumahu ta peab eraldama.
  3. Uus operaator võib deklaratsiooni esitamise ajal helistada objekti ehitajale. Teisest küljest ei saa funktsioon malloc () ehitajat kutsuda.
  4. Operaator 'uus' võis olla üle koormatud, kuid malloc () ei saanud.
  5. Kui uus operaator mälu ei eralda, loobub see erandist, mida tuleb käsitleda koodiga, mille programm muidu lõpetab. Teisest küljest tagastab funktsioon malloc () NULL-i osuti, kui see mälu ei eralda. Kui kursorit kasutatakse seda kontrollimata, põhjustab see süsteemi krahhi.
  6. Uue operaatori abil eraldatud mälu saab eraldada, kasutades kustutamist. Teisest küljest saab funktsiooni malloc () abil eraldatud mälu eraldada vaba () abil.
  7. Kui mälu on uue operaatori abil eraldatud, ei saa selle suurust niikuinii muuta. Teisest küljest saab funktsiooni malloc () abil eraldatud mälu ümber jaotada (suurust muuta) funktsiooni realloc () abil.
  8. Uue käivitusaeg on vähem võrreldes mallociga (), kuna malloc on funktsioon ja uus on konstruktsioon.

Järeldus:

Funktsioon malloc () on vana viis mälu dünaamiliseks eraldamiseks. Tänapäeval kasutatakse uut operaatorit mälu eraldamiseks tööajas, kuna sellel on Malloci () ees teatud eelised.