Skillnad mellan Malloc och New Skillnaden mellan

Anonim

Malloc vs New

One av de vanligaste intervjufrågorna i att anställa en dataprogrammerare är att sökanden / datorprogrammeraren förklarar skillnaderna mellan malloc och new. Båda malloc och nya existerar i dataspråkens rike och används ofta av datorprogrammerare för dynamiska minnesallokeringar.

De grundläggande skillnaderna mellan de två är att malloc existerar på C-språket medan nytt är en särskild egenskap hos C ++-språket. Malloc är också en funktion (som för programmerare kräver lite tid att utföra) medan nytt är ett operatörsprogram (vilket sänker körtiden). Detta är en fördel av operatören ny eftersom programmerare som gör realtidsprogrammering har ett behov av att välja den snabbaste metoden att använda.

Operatörs ny är typsäker, till skillnad från funktionen malloc.

Funktionsmalloc är biblioteksfunktion för C-språket. Allt det gör är att allokera minne och returnera en pekare till den. Å andra sidan är operatören ny en konstruktion på språknivå, och jobbet är att skapa ett objekt genom att allokera minne och ringa till lämpliga konstruktörer. En annan skillnad i funktionen malloc från operatören är att malloc kräver typkontroll under deklarationen medan den tidigare inte gör det. Funktionen malloc använder också ordet "free" för att rensa minnet medan "delete" används i operatören som är ny för samma syfte.

De två har också olika sätt att hantera misslyckande och minneutmattning. Om funktionen malloc misslyckas returneras den med en NULL-pekare. Operatörsnyhet returnerar aldrig en NULL-pekare men indikerar felet genom att lägga ett undantag istället. Detta är en fördel för operatören ny eftersom datorprogrammeraren inte behöver kontrollera den återvändande pekaren varje gång den ringer ny eller datorns programmerare kommer sakna ett sådant undantag.

Funktion malloc konstruerar inte ett objekt (kallad konstruktör av objekt) men operatör ny gör. En annan fördel med nya är att operatören kan överbelasta medan funktionen malloc inte kan. Operatören ny kräver ett visst antal objekt att allokera medan funktionen malloc kräver att du anger det totala antalet bitar som ska fördelas.

Minne kan också omformas eller omfördelas genom att använda funktionen malloc genom att använda realloc. Operatören ny kan dock inte utföra denna funktion och räknas som en av operatörens största nackdelar. En annan fördel med funktionen malloc över operatören är att malloc snabbt kan förlänga mängden minne. Detta använder fortfarande malloc och realloc. När du gör samma situation i C ++-språk måste programmeraren skapa en ny bit av minne med operatören ny. Det nya minnet måste ha en ändrad storlek och kopieras över data från den ursprungliga bufferten.Den ursprungliga bufferten måste raderas efter kopian. Detta kan vara en långsam process för en programmerare.

Operatörsnyheter har hävstång över funktionen malloc genom att returnera exakt datatyp medan funktionen returnerar void *. Funktionsmalloc kan inte överbelastas jämfört med operatör ny, där överbelastning är möjlig. En annan egenskap hos operatören är att det finns mindre chanser att göra misstag med operatören jämfört med funktionen malloc. Detta anses vara ett plus för programmerare, särskilt om de skriver många koder eller arbetar på en kod på ett stramt schema. Funktion malloc och fri kan användas i C ++, men den kan inte användas direkt. Det är lämpligt att använda nytt och radera istället.

Sammanfattning:

1. Malloc är en funktion medan ny är en operatör.

2. Nytt är en särskild egenskap hos C ++-språket medan malloc används på C-språket.

3. Operatör ny följer med "delete" medan funktion malloc går med "free. ”

4. Funktionsmalloc är biblioteksfunktion för C-språket medan operatören är en konstruktion på språknivå från C ++-språket.