Forskel mellem Malloc og New Forskel mellem

Anonim

Malloc vs New

One af de mest almindelige interviews spørgsmål i ansættelse en computer programmør er for ansøgeren / computer programmør at forklare forskellene mellem malloc og nye. Både malloc og ny eksisterer inden for computersproget og bruges ofte af computerprogrammører til dynamiske hukommelsesallokeringer.

De grundlæggende forskelle mellem de to er, at malloc eksisterer i C-sproget, mens nyt er et specifikt træk ved C ++-sproget. Malloc er også en funktion (som for programmører kræver noget tid til at udføre), mens nyt er et operatørprogram (som reducerer udførelsestiden). Dette er en fordel for operatøren ny, fordi programmerere, der laver realtidsprogrammering, har brug for at vælge den hurtigste metode, der skal bruges.

Operatør ny er type sikker i modsætning til funktionen malloc.

Funktion malloc er biblioteksfunktion for C-sproget. Alt det gør er at tildele hukommelse og returnere en peger til den. På den anden side er operatør ny en konstruktion på sprogniveau, og dens opgave er at instantiere et objekt ved at allokere hukommelse og kalde de relevante konstruktører. En anden forskel på funktion malloc fra operatør ny er, at malloc kræver typecasting under erklæring, mens den førstnævnte ikke gør det. Funktionen malloc bruger også ordet "free" for at rydde hukommelsen, mens "delete" bruges i operatør ny til samme formål.

De to har også forskellige måder at håndtere fejl og hukommelse udmattelse. Hvis funktionen malloc fejler, vender den tilbage med en NULL-peger. Operatør ny returnerer aldrig en NULL-peger, men angiver fejlen ved at kaste en undtagelse i stedet. Dette er en fordel for operatøren ny, da computerprogrammereren ikke behøver at tjekke den returnerede peger hver gang den kalder ny eller computerprogrammeringen vil savne en sådan undtagelse.

Funktion malloc konstruerer ikke et objekt (kaldet konstruktør af objekt), men operatør ny gør. En anden fordel ved ny er, at operatøren kan overbelastes, mens funktionen malloc ikke kan. Operatør ny kræver et bestemt antal objekter, der skal allokeres, mens funktionen malloc kræver at angive det samlede antal byte, der skal allokeres.

Hukommelsen kan også omformes eller omfordeles ved at bruge funktion malloc ved hjælp af realloc. Operatør ny kan imidlertid ikke udføre denne funktion og tæller den som en af ​​operatørens væsentligste ulemper. En anden fordel ved funktionen malloc over operator ny er, at malloc kan udvide mængden af ​​hukommelse hurtigt. Dette bruger stadig malloc og realloc. Når man laver samme situation i C ++-sprog, skal programmøren oprette en ny del af hukommelse med operatør ny. Den nye hukommelse skal have en ændret størrelse og kopieres over dataene fra den oprindelige buffer.Den oprindelige buffer skal slettes efter kopien. Dette kan være en langsom proces for en programmør.

Operatør ny har gearing over funktion malloc ved at returnere den nøjagtige datatype, mens funktionen returnerer ugyldig *. Funktion malloc kan heller ikke overbelastes i forhold til operatør ny, hvor overbelastning er mulig. Et andet træk ved operatørnyt er, at der er mindre chancer for at lave fejl med operatøren i forhold til funktionen malloc. Dette betragtes som et plus for programmører, især hvis de skriver mange koder eller arbejder på en kode på en stram tidsplan. Funktion malloc og fri kan bruges i C ++, men det kan ikke bruges direkte. Det anbefales at bruge ny og slette i stedet.

Sammendrag:

1. Malloc er en funktion, mens ny er en operatør.

2. Nyt er et særligt træk ved C ++-sproget, mens malloc bruges i C-sproget.

3. Operatør ny følger med "delete" mens funktion malloc går med "free. ”

4. Funktion malloc er biblioteksfunktion for C-sproget, mens operatør ny er en konstruktion på sprogniveau fra C ++-sproget.