Groesse des allokierten Speichers auslesen (char)



  • Ich bastel gerade an einer eigenen Stringklasse, damit ich herausfinde,
    auf welche Probleme man so stossen kann 😃

    char *test = new char[100];
    
    	strcpy(test, "Phantomas");
    
    	// Laenge des Strings :)
    	cout << strlen(test) << endl;
    
    	// Groesse des Pointers :(
    	cout << sizeof(test) << endl;
    

    In meiner Klasse habe ich einmal einen Nachbau von strlen drin, der mir die Laenge des Strings zurueckgibt. Nun brauch ich noch eine Funktion, um zu wissen, wieviel Speicher ich bereits allokiert habe. Einmal koennte ich den Wert der Groesse in meiner Klasse in einer extra Variable zurueckhalten und ihn immer selber manuell anpassen. Kann man sowas automatisieren? Mit sizeof bekomm ich ja nur die Groesse des Pointers.



  • "Kann man sowas automatisieren?"
    nein

    wirst du wohl mitspeichern müssen
    machst du das nur zu übungs-/lehrzwecken? oder warum nutzt du nicht einfach std::string?

    bb


  • Mod

    Es ist unmöglich, anhand eines Pointers die Größe des allokierten Speichers festzustellen. Dies ist ja gerade der Grund, warum
    a) In C++ 99,999% der std::string-Implementierungen die Größe mitspeichern
    b) In C die Konvention mit den nullterminierten Strings verwendet wird.



  • unskilled schrieb:

    machst du das nur zu übungs-/lehrzwecken? oder warum nutzt du nicht einfach std::string?

    Ich bastel gerade an einer eigenen Stringklasse, damit ich herausfinde,
    auf welche Probleme man so stossen kann

    ...



  • Kannst die Länge auch uptracen.



  • habs mir fast gedacht, aber gut, damit kann ich leben.

    unskilled schrieb:

    machst du das nur zu übungs-/lehrzwecken? oder warum nutzt du nicht einfach std::string?

    nur zu Lehrzwecken. Hier kann man wunderbar mit Operatorueberladungen herumspielen. String verwende ich sonst auch immer, allein, weil ich mit ner
    eigenen Klasse kaum die Performance erreichen werden. Aber ist doch am Ende schoen, wenn die eigene Klasse zumindest von der Funktion annaehernd her das zusammenbekommt, was std::string kann.


Anmelden zum Antworten