Wie verwende ich malloc richtig?



  • chrigi schrieb:

    das msvc ist eigentlich ein C++ Compiler!

    Nein, MSVC hat sowohl einen C- als auch einen C++-Modus. Wenn die Datei die Endung .c hat, sollte es eigentlich gehen. In C++ wäre dafür ein static_cast<Typ*> notwendig.



  • operator void schrieb:

    Nein, MSVC hat sowohl einen C- als auch einen C++-Modus. Wenn die Datei die Endung .c hat, sollte es eigentlich gehen

    Beim aktuellen Compiler gibts dafür auch Compilerflags (/TC, /TP).



  • Wie verwende ich malloc richtig?

    new benutzen.

    PS: Klingt vielleicht besserwisserich ist aber wirklich besser.



  • Irgendwer schrieb:

    new benutzen.

    new ist keine Anwendungsbeschreibung für malloc.



  • @randa: Hä?

    MfG SideWinder



  • Ups, da bin ich in die falsche Sparte gerutscht, Ansi C wäre besser gewesen. Dass man unter C++ new verwenden sollte weiß ich. Ich b rauchte es aber für diesen Text: http://www.luckie-online.de/C_C++/Strings_in_C++.shtml



  • Luckie schrieb:

    http://www.luckie-online.de/C_C++/Strings_in_C++.shtml

    Dir ist aber schon klar, dass es std::string gibt?
    Und das ist wesentlich besser als CString



  • Stimmt! Aber es nervt mich ein bisschen, dass Alltagsaufgaben wie trim oder das Ersetzen von Teilstrings nicht standardmäßig implementiert sind und jeder sich da selber was frickeln muss. Jaja, ist schnell gemacht, aber wenn man viel fremden Code liest nervt es.



  • Stimmt! Aber es nervt mich ein bisschen, dass Alltagsaufgaben wie trim oder das Ersetzen von Teilstrings nicht standardmäßig implementiert sind und jeder sich da selber was frickeln muss. Jaja, ist schnell gemacht, aber wenn man viel fremden Code liest nervt es.

    Es gibt eine kostenlose Bibliothek namens Boost (zu beziehen auf www.boost.org), die solche Funktionen beinhaltet.



  • Klar kann man vieles Lücken im Standard mit boost auffüllen, aber wird so ein Standard wirklich nur von Theoretikern entwickelt? Jede vernünftige String-Klasse sollte IMHO von vorne herein über eine replace-Funktion verfügen, weil das echt praktisch ist. Naja, vielleicht bin ich auch einfach zu verwöhnt 😉 .

    Btw: Danke, wusste bis gerade nicht, dass boost String-Replace-Funktionen beinhaltet. Das mag ich an dieser Library: Man findet jeden Tag was neues.



  • ist boost (hab ich grad kennengelernt!) eigentlich plattform unabhängig?



  • @chrigi
    kommt auf die Library an, da viele Teile der Library in ISO C++ implementiert sind, sollten sie auf jedem C++ Compiler laufen. Einige Dinge, wie Threads etc. brauchen aber Platform Support. Dann schau mal auf den entsprechenden Seiten nach, welche Platformen unterstützt werden. Ich glaube Win32 und POSIX (Linux, Unix) ist mindestens die Vorraussetzung.



  • MaSTaH schrieb:

    Jede vernünftige String-Klasse sollte IMHO von vorne herein über eine replace-Funktion verfügen

    std::string verfügt gleich über 10 (in Worten zehn) verschiedene replace-Funktionen. Das Problem von std::string ist nicht das diese Klasse zu wenig Funktionen sondern viel zu viele hat (103 Memberfunktionen sind ne Menge Holz)*. Man sollte imo den std::string-Erfindern nicht vorwerfen, dass sie ein paar hundert Bequemlichkeitsfunktionen vergessen haben sondern vielmehr, dass sie keine schlanke Klasse mit minimalem (STL-kompatiblen) Interface standardisiert haben. Eine solche könnte man dann bequem über freie Funktionen (und STL-Algorithmen) erweitern (welche Bequemlichkeitsfunktionen dann in den Standard gehören, müsste man wieder lang und breit diskutieren). Das hätte gleich auch den Vorteil, dass einige dieser Funktionen damit auch auf andere Sequenzen anwendbar wären.

    * Herb Sutter zeigt in seinem Buch "Exceptional C++ Style", dass von den 103 Memberfunktionen nur 32 wirklich nötig sind. Alle anderen können dann basierend auf den 32 Memberfunktionen ohne Geschwindigkeitsverlust implementiert werden.



  • @Hume: Ja, aber die Art von replace meinte ich nicht. Die haben viele unnütze Funktionen eingebaut, aber gleichzeitig einige nützliche vergessen.


Anmelden zum Antworten