Differenz zwischen Malloc und Neu Unterschied zwischen

Anonim

Malloc vs New

One erklärt der häufigsten Interviewfragen bei der Einstellung eines Computerprogrammierers ist für den Bewerber / Computerprogrammierer, die Unterschiede zwischen malloc und neu zu erklären. Sowohl malloc als auch new existieren im Bereich der Computersprache und werden oft von Computerprogrammierern für dynamische Speicherzuweisungen verwendet.

Der grundlegende Unterschied zwischen den beiden besteht darin, dass malloc in der C-Sprache existiert, während new ein spezifisches Merkmal der C ++ - Sprache ist. Malloc ist auch eine Funktion (die für Programmierer etwas Zeit benötigt, um ausgeführt zu werden), während Neu ein Bedienerprogramm ist (was die Ausführungszeit verkürzt). Dies ist ein Vorteil für den Bediener, da Programmierer, die Echtzeitprogrammierung durchführen, die schnellste zu verwendende Methode wählen müssen.

Operator new ist typsicher im Gegensatz zur Funktion malloc.

Funktion malloc ist eine Bibliotheksfunktion für die C-Sprache. Alles, was es tut, ist die Zuweisung von Speicher und die Rückgabe eines Zeigers. Auf der anderen Seite ist operator new ein Konstrukt auf Sprachenebene und seine Aufgabe besteht darin, ein Objekt zu instanziieren, indem Speicher zugewiesen und die entsprechenden Konstruktoren aufgerufen werden. Ein weiterer Unterschied zwischen der Funktion malloc und dem Operator new besteht darin, dass malloc während der Deklaration typecasting benötigt, während dies bei ersteren nicht der Fall ist. Außerdem verwendet die Funktion malloc das Wort "free", um den Speicher zu löschen, während "delete" im Operator new für den ähnlichen Zweck verwendet wird.

Die beiden haben auch unterschiedliche Wege, mit Versagen und Gedächtnismüdigkeit umzugehen. Wenn die Funktion malloc fehlschlägt, wird sie mit einem NULL-Zeiger zurückgegeben. Operator new gibt nie einen NULL-Zeiger zurück, sondern gibt den Fehler an, indem er stattdessen eine Ausnahme auslöst. Dies ist ein Vorteil für den Bediener neu, da der Computerprogrammierer den zurückgegebenen Zeiger nicht jedes Mal überprüfen muss, wenn er neu anruft, noch wird der Computerprogrammierer eine solche Ausnahme verpassen.

Funktion malloc erstellt kein Objekt (Konstruktor des Objekts), aber Operator new tut dies. Ein weiterer Vorteil von new ist, dass der Operator überlastet werden kann, während Funktion malloc nicht kann. Operator new benötigt eine bestimmte Anzahl von Objekten, die zugeordnet werden sollen, während die Funktion malloc die Angabe der Gesamtzahl der zuzuteilenden Bytes erfordert.

Speicher kann auch mit Hilfe der Funktion malloc reallized oder reallociert werden, indem realloc verwendet wird. Der Operator new kann diese Funktion jedoch nicht ausführen und zählt sie zu den Hauptnachteilen des Betreibers. Ein weiterer Vorteil der Funktion malloc gegenüber dem Operator new ist, dass malloc die Speichermenge schnell erweitern kann. Dies verwendet immer noch malloc und realloc. Wenn die gleiche Situation in C ++ - Sprache auftritt, muss der Programmierer einen neuen Speicherbereich mit dem Operator new erstellen. Der neue Speicher muss eine geänderte Größe haben und wird über die Daten aus dem ursprünglichen Puffer kopiert.Der ursprüngliche Puffer muss nach dem Kopieren gelöscht werden. Dies kann für einen Programmierer ein langsamer Prozess sein.

Operator new hat eine Hebelwirkung auf die Funktion malloc, indem der genaue Datentyp zurückgegeben wird, während die Funktion void * zurückgibt. Die Funktion malloc kann auch nicht überladen werden, verglichen mit dem Operator new, bei dem eine Überlastung möglich ist. Ein weiteres Merkmal von operator new ist, dass es weniger Möglichkeiten gibt, Fehler mit dem Operator zu machen als mit der Funktion malloc. Dies wird als ein Plus für Programmierer angesehen, besonders wenn sie viele Codes schreiben oder an einem Code in einem engen Zeitplan arbeiten. Die Funktion malloc und free kann in C ++ verwendet werden, sie kann jedoch nicht direkt verwendet werden. Es ist ratsam, stattdessen new und delete zu verwenden.

Zusammenfassung:

1. Malloc ist eine Funktion, während neu ein Operator ist.

2. Neu ist ein spezifisches Merkmal der C ++ - Sprache, während malloc in der C-Sprache verwendet wird.

3. Operator new folgt mit "delete", während Funktion malloc mit "free. "

4. Funktion malloc ist eine Bibliotheksfunktion für die C-Sprache, während operator new ein Konstrukt auf Sprachenebene aus der Sprache C ++ ist.