Forskjell mellom Malloc og New Forskjellen mellom

Anonim

Malloc vs New

One av de vanligste intervju spørsmålene i å ansette en dataprogrammerer er for søkeren / dataprogrammereren å forklare forskjellene mellom malloc og ny. Både malloc og ny eksisterer innenfor dataspråket og brukes ofte av dataprogrammerere for dynamiske minneallokeringer.

De grunnleggende forskjellene mellom de to er at malloc eksisterer på C-språket, mens nytt er en spesifikk egenskap av C ++-språket. Malloc er også en funksjon (som for programmerere krever litt tid til å utføre) mens nytt er et operatørprogram (som reduserer kjøringen). Dette er en fordel fra operatøren ny fordi programmører gjør realtidsprogrammering, har et behov for å velge den raskeste metoden som skal brukes.

Operatør ny er type sikker i motsetning til funksjonen malloc.

Funksjonsmalloc er biblioteksfunksjon for C-språket. Alt det gjør er å tildele minne og returnere en peker til den. På den annen side er operatør ny en konstruksjon på språknivå, og jobben er å instantiere et objekt ved å tildele minne og ringe til de aktuelle konstruktørene. En annen forskjell fra funksjonen malloc fra operatør ny er at malloc krever typecasting under erklæring mens den tidligere ikke gjør det. Funksjonen malloc bruker også ordet "free" for å slette minnet mens "delete" brukes i operatør som er nytt for samme formål.

De to har også forskjellige måter å håndtere feil og minneutmattelse. Hvis funksjonen malloc mislykkes, returnerer den med en NULL-peker. Operatør ny returnerer aldri en NULL-peker, men indikerer feilen ved å kaste et unntak i stedet. Dette er en fordel for operatøren ny siden dataprogrammereren ikke trenger å sjekke den returnerte pekeren hver gang den ringer til nytt, heller ikke programutvikleren vil savne et slikt unntak.

Funksjon malloc konstruerer ikke et objekt (kalt konstruktør av objekt), men operatør ny gjør. En annen fordel ved ny er at operatøren kan bli overbelastet mens funksjonsmalloc ikke kan. Operatør ny krever et bestemt antall objekter å tildele mens funksjonen malloc krever spesifisering av totalt antall byte som skal tilordnes.

Minne kan også omformas eller omfordeles ved å bruke funksjonen malloc ved å bruke realloc. Operatørny kan imidlertid ikke utføre denne funksjonen og teller den som en av operatørens viktigste ulemper. En annen fordel med funksjonen malloc over operatør ny er at malloc kan forlenge mengden minne raskt. Dette bruker fortsatt malloc og realloc. Når du gjør samme situasjon i C ++-språket, må programmereren lage en ny del av minne med operatør ny. Det nye minnet må ha en endret størrelse og vil bli kopiert over dataene fra den opprinnelige bufferen.Den opprinnelige bufferen må slettes etter kopien. Dette kan være en sakte prosess for en programmerer.

Operatør ny har innflytelse over funksjonen malloc ved å returnere den eksakte datatypen mens funksjonen returnerer tomt *. Funksjonsmalloc kan heller ikke overbelastes sammenlignet med operatør ny hvor overbelastning er mulig. Et annet trekk ved operatørnyt er at det er mindre sjanser til å gjøre feil med operatøren i forhold til funksjonen malloc. Dette betraktes som et pluss for programmerere, spesielt hvis de skriver mange koder eller jobber med en kode på en stram tidsplan. Funksjonen malloc og fri kan brukes i C ++, men den kan ikke brukes direkte. Det anbefales at du bruker nytt og slett i stedet.

Sammendrag:

1. Malloc er en funksjon mens ny er operatør.

2. Ny er en spesifikk egenskap av C ++-språket mens malloc brukes på C-språket.

3. Operatør ny følger med "slett" mens funksjonen malloc går med "gratis. “

4. Funksjon malloc er biblioteksfunksjon for C-språket mens operatør ny er en språknivåkonstruksjon fra C ++-språket.