malloc, wozu?
-
Man muß noch sagen, das malloc eine C-Funktion ist (oder fällt malloc unter die Schlüsselwörter? Habe nie C gelernt...) und im C++ Kontex ist es somit bedeutungslos.
Wie die Kollegen schon sagen, in C++ benutzt man dafür das new-Schlüsselwort.
-
malloc Schlüsselwort?
Um, da sind aber Klammern drum und man muss casten, also das erscheint mir für ein Schlüsselwort komisch *rolleyes*
-
Deshalb frage ich ja, ich habe nie C gelernt (bin von Assembler auf C++) und somit kenne ich malloc nur vom hören sagen. Sprich: ich habe es nie verwendet und ich sehe es auch nie in meiner Literatur gesehen oder etwas darüber gelesen. Aber ich weiß, das es nicht zu C++ gehört.
Wenn es eine Funktion ist, gut.
-
malloc gibt übrigens, falls Dich das interessiert, einen Zeiger auf den allokierten Speicherbereich zurück.
-
Bashar schrieb:
INTEGER schrieb:
Was macht man eigentlich mit der malloc Funktion?
Nichts, man benutzt den new-Operator.
aha, und der new operator benutzt ja malloc, wie man hier in dem Thread gut sehen konnte:
http://www.c-plusplus.net/forum/viewtopic.php?t=68536&highlight=malloc+benutzt+new
-
Nein, eine spezielle Implementierung der Funktion operator new() benutzt malloc. Bevor du weiter stänkerst mögest du dich mit dem Unterschied zwischen operator new() und dem new-Operator auseinandersetzen und den Begriff beobachtbares Verhalten in Verbindung mit der «as if»-Regel erörtern.
-
Mis2com schrieb:
malloc Schlüsselwort?
Um, da sind aber Klammern drum und man muss casten, also das erscheint mir für ein Schlüsselwort komisch *rolleyes*Also in C musste man meines Wissens noch nie den Rückgabewert von malloc casten und in C++ soll man es nicht.
-
MaSTaH schrieb:
Also in C musste man meines Wissens noch nie den Rückgabewert von malloc casten und in C++ soll man es nicht.
In C++ wird man um den cast aber nicht herumkommen...
-
Nein, eine spezielle Implementierung der Funktion operator new() benutzt malloc. Bevor du weiter stänkerst mögest du dich mit dem Unterschied zwischen operator new() und dem new-Operator auseinandersetzen und den Begriff beobachtbares Verhalten in Verbindung mit der «as if»-Regel erörtern.
Muss nicht bedeuten, dass new malloc benutzt. Kann auch sein, dass beide auf die gleichen OS Funktionen zurückgreifen. Unter Win32 wird sehr oft HeapAlloc benutzt.
Und unter C is malloc eine Funktion.
-
malloc gibt man die Größe in Bytes an die man anlegen will. Bei new gibt man die Anzahl an. Malloc wirft keine expceptions im Gegensatz zum new.
unsigned long *pArray = malloc( 10 * sizeof( unsigned long ) );
unsigned long *pArray = new unsigned long[ 10 ];
bei new wird des Konstruktor ausgeführt bei malloc nicht.
CKlasse *pArray = malloc( 10 * sizeof( CKlasse ) );
ruft CKlasse::CKlasse nicht auf
CKlasse *pArray = new CKlasse[ 10 ]
ruft CKlasse::CKlasse bei jedem der 10 Elemente auf