Malloc vs New
Jedno od najčešćih pitanja za intervju pri zapošljavanju računalnog programera je da podnositelj zahtjeva / računalni programer objasni razlike između malloc i new. I mali i novi postoje u području računalnog jezika i računalni programeri ih često koriste za dinamičko raspoređivanje memorije.
Osnovna razlika između njih dvojice je da mallok postoji u jeziku C, dok je novo specifično svojstvo jezika C ++. Malloc je također funkcija (koja programerima zahtijeva neko vrijeme da izvrše), dok je nova operativni program (koji skraćuje vrijeme izvršenja). To je prednost novog operatora jer programeri koji rade programiranje u stvarnom vremenu moraju odabrati najbrži način za korištenje.
Operator new je siguran za tip za razliku od funkcije malloc.
Funkcija malloc je funkcija biblioteke za C-jezik. Sve što treba je dodijeliti memoriju i vratiti pokazivač na nju. S druge strane, operator new je konstrukt na razini jezika, a njegov je zadatak stvoriti objekt dodjelom memorije i pozivanjem odgovarajućih konstruktora. Još jedna razlika funkcije malloc od operatora new je ta što malloc zahtijeva tipkanje tijekom deklaracije, dok prvi ne. Također, funkcija malloc koristi riječ "besplatno" za brisanje memorije dok se "operator" koristi u novom operateru za slične svrhe.
Njih dvoje imaju i različite načine rješavanja neuspjeha i iscrpljenosti memorije. Ako funkcija malloc ne uspije, vraća se pokazivačem NULL. Operator new nikad ne vraća pokazivač NULL, ali označava neuspjeh tako da umjesto toga baci iznimku. Ovo je prednost za novoga operatora jer računalni programer ne mora provjeriti vraćeni pokazivač svaki put kada pozove novo niti će računalni programer propustiti takvu iznimku.
Funkcija malloc ne konstruira objekt (nazvan konstruktor objekta), ali operator novo čini. Još jedna prednost novog je što se operator može preopteretiti dok funkcija malloc ne može. Operator new zahtijeva dodijeliti određeni broj objekata dok funkcija malloc zahtijeva određivanje ukupnog broja bajtova koje treba rasporediti.
Memorija se također može promijeniti u veličinu ili ponovo rasporediti pomoću funkcije malloc koristeći realloc. No, operator new ne može obavljati ovu funkciju i smatra ga jednim od glavnih nedostataka operatera. Još jedna prednost funkcije malloc nad operatorom new je da malloc može brzo proširiti količinu memorije. Ovo se još uvijek koristi malloc i realloc. Kada radi istu situaciju na jeziku C ++, programer mora stvoriti novi komad memorije s operatorom new. Nova memorija mora imati modificiranu veličinu i kopirat će se preko podataka iz izvornog međuspremnika. Originalni međuspremnik mora se nakon kopije izbrisati. To može biti spor proces za programera.
Operator new ima utjecaj na funkciju malloc vraćanjem točne vrste podataka dok funkcija vraća void *. Funkcija malloc se također ne može preopteretiti u usporedbi s operatorom novim, gdje je moguće preopterećenje. Još jedna značajka novog operatera je da su manje šanse za pogrešku s operatorom u usporedbi s funkcijom malloc. To se smatra plusom za programere, pogotovo ako pišu mnoge kodove ili rade na kodu u vrlo kratkom rasporedu. Funkcija malloc i free mogu se koristiti u C ++, ali ne mogu se izravno koristiti. Preporučljivo je umjesto toga koristiti novo i izbrisati.
Sažetak:
1. Malloc je funkcija dok je novi operator.
2. Novo je specifična značajka jezika C ++, dok se malloc koristi u jeziku C.
3. Operator novo slijedi sa "delete" dok funkcija malloc ide sa "free".
4. Function malloc je funkcija biblioteke za C-jezik, dok je operator new konstrukcija na razini jezika iz jezika C ++.