glibc detected malloc(): memory corruption



  • Vielen Dank! 🙂



  • warum benutzt du nicht std::string?



  • So wie ich das gesehen habe wollen fast alle Funktionen nen const char* als Parameter haben.
    Und da müsste ich dann ja erst in string umwandeln und später das ganze rückgängig machen?





  • naja diese Funktion gibt ja auch einen const char* zurück, das ist ja das was ich meinte.



  • Du speicherst alles in std::string, wenn eine Funktion einen const char* haben will, dann gibst du ihr die Rückgabe von c_str(). Mehr brauchst du eigentlich nicht umwandeln.

    Edit: In die andere Richtung gehts übrigens mit dem Konstruktor von std::string.



  • Nunja das ist mir natürlich klar.

    Aber da ja letzten Endes eh so gut wie jede Funktion einen const char* verlangt kann ich das alles ja auch direkt als const char* deklarieren und entsprechend damit arbeiten.

    Einziger Vorteil bei strings ist natürlich das man mit denen deutlich einfacher rumhantieren kann in den meisten Fällen. Aber um das alles an eine Funktion zu übergeben muss man einen String dann eben doch wieder in const char* umwandeln.



  • phost schrieb:

    Einziger Vorteil bei strings ist natürlich das man mit denen deutlich einfacher rumhantieren kann in den meisten Fällen. Aber um das alles an eine Funktion zu übergeben muss man einen String dann eben doch wieder in const char* umwandeln.

    Probier es doch mal aus, statt es vorher abzulehnen.



  • Ich lehne das nicht ab, so war das nicht gemeint.

    Der Nutzen ist mir vollkommen klar und auch nachvollziehbar^^

    Allerdings ist mir das ein wenig zu "leicht". Da ich gerade erst mit C++ angefangen habe möchte ich am liebsten "ganz unten" anfangen, falls ihr versteht wie ich das meine.
    Wenn ich mal auf dem Stand bin das ich eh weiß wie es im Hintergrund alles funktioniert greife ich natürlich auf fertige Klasse wie zB String zurück. Aber vorher möchte ich um des Lernens willen gern so weit wie möglich bei den Basics bleiben.



  • phost schrieb:

    Ich lehne das nicht ab, so war das nicht gemeint.

    Der Nutzen ist mir vollkommen klar und auch nachvollziehbar^^

    Allerdings ist mir das ein wenig zu "leicht". Da ich gerade erst mit C++ angefangen habe möchte ich am liebsten "ganz unten" anfangen, falls ihr versteht wie ich das meine.
    Wenn ich mal auf dem Stand bin das ich eh weiß wie es im Hintergrund alles funktioniert greife ich natürlich auf fertige Klasse wie zB String zurück. Aber vorher möchte ich um des Lernens willen gern so weit wie möglich bei den Basics bleiben.

    machs lieber umgekehrt. Dieses "erstmal von grundauf lernen" entwickelt sich leider oftmals zu einer schwer heilbaren krankheit, weil du ab irgendeinem Punkt alles mit dn Grundwerkzugen "irgendwie" hin kriegst und sich das "Neulernen" auf dem rsten Blick nicht lohnt. Aber eigentlich ist es genau umgekehrt, wenn man das high-level Zeugs drauf hat, braucht man den low-level kram gar nicht mehr.



  • Hm ja das macht sogesehen Sinn 😃

    Allerdings ist mir immer etwas unwohl dabei wenn ich etwas abstrahiertes benutze und ich eigentlich keinen Plan davon habe was intern tatsächlich passiert.



  • phost schrieb:

    Allerdings ist mir immer etwas unwohl dabei wenn ich etwas abstrahiertes benutze und ich eigentlich keinen Plan davon habe was intern tatsächlich passiert.

    Ja, aber die Theorie dahinter kannst du dir ja anlesen.
    Um sie zu verstehen, musst du es nicht zwingend selber implementieren.
    Ich benutze auch std::vector ohne je einen implementiert zu haben, habe aber doch ein gutes Verständnis, was intern abläuft.


Anmelden zum Antworten