Squicky
Lt. Commander
- Registriert
- Sep. 2002
- Beiträge
- 1.422
Hallo
Wo ist der Unterschied in folgenden zwei Zeilen:
name ist als char Pointer (char *name) deklariert.
Nach meinem Wissen geben malloc und new in diesem Beispiel ein Adresse aus dem heap zurück.
Wenn ich mir beide Möglichkeiten mit dem Debugger anschaue, geben sogar beide die gleiche Adresse zurück (0x805cf68).
Bei der Variante mit new kommt es aber viel später im Programm zu einem SIGABRT Fehler, wenn ein String (std::string) einen Wert vom Typ char Pointer (nicht name) übergeben bekommt.
Wo genau ist der technische Unterschied in diesem Beispiel zwischen new und malloc?
Es ist bekannt, dass new automatisch den Konstruktor der Klasse aufruft. Aber hat "char" einen Konstruktor?
Falls wichtig: Es wird gcc bzw. g++ 4.6.1 mit -m32 auf einem 64 Bit System benutzt. (Linux)
Danke
Wo ist der Unterschied in folgenden zwei Zeilen:
Code:
name = (char*) malloc(strlen(oldname) + 1);
name = new char(strlen(oldname) + 1);
Nach meinem Wissen geben malloc und new in diesem Beispiel ein Adresse aus dem heap zurück.
Wenn ich mir beide Möglichkeiten mit dem Debugger anschaue, geben sogar beide die gleiche Adresse zurück (0x805cf68).
Bei der Variante mit new kommt es aber viel später im Programm zu einem SIGABRT Fehler, wenn ein String (std::string) einen Wert vom Typ char Pointer (nicht name) übergeben bekommt.
Wo genau ist der technische Unterschied in diesem Beispiel zwischen new und malloc?
Es ist bekannt, dass new automatisch den Konstruktor der Klasse aufruft. Aber hat "char" einen Konstruktor?
Falls wichtig: Es wird gcc bzw. g++ 4.6.1 mit -m32 auf einem 64 Bit System benutzt. (Linux)
Danke