Malloc vs uus
Üks levinumaid intervjuuküsimusi arvutiprogrammeerija palkamisel on taotlejale / arvutiprogrammeerijale selgitada erinevused malloci ja uue vahel. Nii malloc kui uus eksisteerivad arvutikeele valdkonnas ja sageli kasutavad arvutiprogrammeerijad dünaamilise mälu eraldamiseks.
Peamised erinevused nende kahe vahel on see, et malloc eksisteerib C-keeles, uus on aga C ++ keele eripära. Malloc on ka funktsioon (mille programmeerijad vajavad täitmiseks natuke aega), samas kui uus on operaatorprogramm (mis vähendab täitmise aega). See on uue operaatori eelis, kuna reaalajas programmeerimist teostavatel programmeerijatel on vaja valida kiireim kasutatav meetod.
Uus operaator on erinevalt funktsioonist malloc tüüp-ohutu.
Funktsioon malloc on C-keele raamatukogu funktsioon. Kõik, mis selleks on, on mälu eraldamine ja osuti sellele tagastamine. Teisest küljest on uus operaator keeletaseme konstruktsioon ja selle ülesandeks on objekti kiirendamine mälu eraldamise ja sobivate konstruktorite kutsumisega. Teine erinevus funktsiooni malloc ja uue operaatori vahel on see, et malloc nõuab deklareerimise ajal spetsiifilist määramist, kuna endine seda ei tee. Samuti kasutab funktsioon malloc mälu tühjendamiseks sõna „vaba”, samasuguse otstarbe korral uues operatsioonis kasutatakse sõna „kustuta”..
Neil kahel viisil on tõrke ja mälu kurnatusega toimetulemiseks erinevad viisid. Kui funktsioon malloc ebaõnnestub, naaseb see NULL-i osutiga. Uus operaator ei tagasta kunagi NULL-i kursorit, vaid näitab tõrget, visates selle asemel erandi. See on uue operaatori eelis, kuna arvutiprogrammeerija ei pea iga kord, kui ta uuele helistab, tagastatud kursorit kontrollima ega programmeerija sellist erandit kasutamata jätma.
Funktsioon malloc ei konstrueeri objekti (nimetatakse objekti konstruktoriks), kuid uus operaator seda teeb. Uue eeliseks on ka see, et operaatorit saab üle koormata, samal ajal kui funktsioon malloc seda ei saa. Uus operaator nõuab eraldamiseks kindlat arvu objekte, samas kui funktsioon malloc nõuab eraldatavate baitide koguarvu täpsustamist.
Mälu saab muuta ka ümber suuruse määramiseks või ümberjaotamiseks, kasutades funktsiooni malloc, kasutades realloki. Uus operaator ei saa seda funktsiooni siiski täita ja peab seda operaatori üheks peamiseks puuduseks. Funktsiooni malloc eeliseks uue operaatori ees on see, et malloc võib mälu kiiresti laiendada. See kasutab endiselt malloc ja realloc. Kui teete sama olukorda C ++ keeles, peab programmeerija looma operaatori uuega uue mälupaki. Uuel mälul peab olema muudetud suurus ja see kopeeritakse andmetega algsest puhvrist. Algne puhver tuleb pärast koopiat kustutada. See võib olla programmeerija jaoks aeglane protsess.
Uuel operaatoril on funktsiooni malloc osas võimendus, tagastades täpse andmetüübi, kui funktsioon on tühine *. Funktsiooni malloc ei saa samuti üle koormata, võrreldes uue operaatoriga, kus ülekoormamine on võimalik. Teine uue operaatori omadus on see, et operaatoril on vähem võimalusi vigu teha kui funktsiooni malloc puhul. Seda peetakse programmeerijate jaoks plussiks, eriti kui nad kirjutavad palju koode või töötavad koodil tiheda ajakava järgi. Funktsiooni malloc ja free saab kasutada versioonis C ++, kuid seda ei saa otse kasutada. Soovitav on kasutada uut ja kustutada.
Kokkuvõte:
1. Malloc on funktsioon, uus aga operaator.
2. Uus on C ++ keele eripära, C-keeles aga malloc.
3. Uus operaator järgib sõnaga „kustutada”, funktsioon malloc aga sõnaga „tasuta”.
4. Funktsioon malloc on C-keele raamatukogu funktsioon, uus operaator on keeletaseme konstruktsioon C ++ keelest.