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


Anmelden zum Antworten