Malloc vs New
Eine der häufigsten Interviewfragen bei der Einstellung eines Computerprogrammierers besteht darin, dass der Bewerber / Computerprogrammierer die Unterschiede zwischen malloc und neu erläutert. Sowohl malloc als auch new existieren im Bereich der Computersprache und werden von Computerprogrammierern häufig für dynamische Speicherzuweisungen verwendet.
Der grundlegende Unterschied zwischen den beiden besteht darin, dass Malloc in der C-Sprache vorhanden ist, während new ein spezifisches Merkmal der C ++ - Sprache ist. Malloc ist auch eine Funktion (die für Programmierer einige Zeit zum Ausführen benötigt), während neu ein Operator-Programm ist (wodurch die Ausführungszeit verkürzt wird). Dies ist ein Vorteil des Operators new, da Programmierer, die Echtzeit-Programmierung durchführen, die schnellste zu verwendende Methode wählen müssen.
Operator new ist im Gegensatz zur Funktion malloc typsicher.
Funktion malloc ist eine Bibliotheksfunktion für die C-Sprache. Alles, was es tut, ist Speicher zuzuordnen und einen Zeiger auf ihn zurückzugeben. Andererseits ist der Operator new ein Konstrukt auf Sprachebene. Seine Aufgabe besteht darin, ein Objekt durch Zuweisen von Speicher und das Aufrufen der entsprechenden Konstruktoren zu instanziieren. Ein weiterer Unterschied zwischen malloc und operator new besteht darin, dass malloc während der Deklaration eine Typumwandlung erfordert, während der erstere dies nicht tut. Die Funktion malloc verwendet auch das Wort "free", um den Speicher zu löschen, während "delete" im Operator new zu einem ähnlichen Zweck verwendet wird.
Die beiden haben auch unterschiedliche Möglichkeiten im Umgang mit Versagen und Ermüdung des Gedächtnisses. Wenn die Funktion malloc fehlschlägt, wird sie mit einem NULL-Zeiger zurückgegeben. Operator new gibt niemals einen NULL-Zeiger zurück, sondern zeigt den Fehler an, indem er stattdessen eine Ausnahme auslöst. Dies ist ein Vorteil für den Operator new, da der Computerprogrammierer den zurückgegebenen Zeiger nicht jedes Mal überprüfen muss, wenn er neu aufruft, und der Computerprogrammierer eine solche Ausnahme nicht bemerkt.
Die Funktion malloc erstellt kein Objekt (als Objektkonstruktor bezeichnet), sondern der Operator new tut dies. Ein weiterer Vorteil von new ist, dass der Operator überlastet werden kann, während function malloc dies nicht kann. Operator new erfordert die Zuweisung einer bestimmten Anzahl von Objekten, während für die Funktion malloc die Gesamtanzahl der zuzuweisenden Bytes erforderlich ist.
Der Speicher kann auch mit der Funktion malloc unter Verwendung von realloc neu dimensioniert oder neu zugewiesen werden. Der Operator new kann diese Funktion jedoch nicht ausführen und zählt zu den Hauptnachteilen des Operators. Ein weiterer Vorteil von function malloc gegenüber dem Operator new ist, dass malloc den Speicher schnell erweitern kann. Dies verwendet immer noch Malloc und Realloc. Wenn der Programmierer dieselbe Situation in C ++ ausführt, muss er mit dem Operator new einen neuen Speicherbereich erstellen. Der neue Speicher muss eine geänderte Größe haben und wird über die Daten aus dem ursprünglichen Puffer kopiert. Der Originalpuffer muss nach der Kopie gelöscht werden. Dies kann für einen Programmierer ein langsamer Prozess sein.
Der Operator new hat Einfluss auf die Funktion malloc, indem er den genauen Datentyp zurückgibt, während die Funktion void * zurückgibt. Die Funktion malloc kann auch nicht überladen werden, im Vergleich zum Operator new, bei dem eine Überladung möglich ist. Eine weitere Besonderheit des Operators new ist, dass die Fehlerwahrscheinlichkeit beim Operator geringer ist als bei der Funktion malloc. Dies ist ein Vorteil für Programmierer, besonders wenn sie viele Codes schreiben oder nach einem engen Zeitplan an einem Code arbeiten. Die Funktionen malloc und free können in C ++ verwendet werden, sie können jedoch nicht direkt verwendet werden. Es ist ratsam, stattdessen new und delete zu verwenden.
Zusammenfassung:
1. Malloc ist eine Funktion, während new einen Operator darstellt.
2. Neu ist eine spezifische Funktion der C ++ - Sprache, während malloc in der C-Sprache verwendet wird.
3. Der Operator new folgt mit "delete", während die Funktion malloc mit "free" geht.
4. Die Funktion malloc ist eine Bibliotheksfunktion für die C-Sprache, während der Operator new ein Konstrukt auf der Ebene der Sprache C ++ ist.