Größe des Inhalts einer Variablen ermitteln, auf die gezeigt wird



  • Servus,

    wenn ich einen Zeiger folgendermaßen definiert habe:

    xFile = (unsigned char 😉 malloc(ArchiveFiles->Size);

    Wie kann ich dann herausfinden wie groß der Inhalt der Variable ist auf der gezeigt wird?

    sizeof(xFile*) geht leider net 😞

    Viele Grüße,

    cYaONE

    PS: ArchiveFiles->Size ist in dem Fall nicht bekannt!



  • int* p = new int, a = sizeof(*p); delete p;
    

    so meinst du es?



  • shlo: das ist unsinn, da wuerde bei cayone immer 1 rauskommen.
    cayone: es geht nicht. du musst dir die beim allokieren benutzte size mitspeichern. darueber wurde hier schon oft diskutiert. ich finde es unlogisch, dass delete die groesse rausfinden kann, man selbst aber nicht.



  • int* p = new int, a = sizeof(*p); delete p;
    

    so meinst du es?

    oh junge, schon wieder nur quatsch!

    @cYaONE: musst du denn zeiger verwenden?



  • Jonas Klein schrieb:

    int* p = new int, a = sizeof(*p); delete p;
    

    so meinst du es?

    oh junge, schon wieder nur quatsch!

    @cYaONE: musst du denn zeiger verwenden?

    dann mach es besser, oh cpp guru 😃



  • Das gehört verschoben ins Ansi C Forum.



  • Wie kommst du auf die Schnapsidee? C++-Fragen haben dort nichts zu suchen. Das gehört höchstens inzwischen ins Trollforum.



  • Er hat sich nicht explizit auf C oder C++ festgelegt, aber er hat es implizit mit seinem Ausgangscode getan:

    xFile = (unsigned char *) malloc(ArchiveFiles->Size);
    

    Geht zwar auch in C++ ist aber eigentlich C, oder? 😕



  • Ich denke die Frage wurde schon beantwortet und der rest tut nun nix zur sache..... ?!



  • dann mach es besser, oh cpp guru

    1. besser machen? cpp guru? ich habe von dir hier bissher nur fehler gesehen. also bitte! man muss keine guru sein um zu sehen, was du für fehler machst!



  • Mis2com schrieb:

    xFile = (unsigned char *) malloc(ArchiveFiles->Size);
    

    Geht zwar auch in C++ ist aber eigentlich C, oder? 😕

    ne, das geht zwar auch in C, ist aber eigentlich C++



  • zum Problem:
    PeterTheMaster hat es ja schon gesagt.

    deshalb verwendet man des oefteren eine klasse, die diese aufgabe uebernimmt.

    zB
    myString str(100);

    cout<<str.capacity();

    koennte dann zB 100 ausgeben.
    man muss sich so eine klasse aber selber schreiben. oder man nimmt die container der STL -> vector, list, deque koennten passend sein.



  • Mis2com schrieb:

    Er hat sich nicht explizit auf C oder C++ festgelegt

    Doch, dadurch dass er das im C++ Forum gepostet hat.

    [malloc]
    Geht zwar auch in C++ ist aber eigentlich C, oder?

    Es ist weder idiomatisches C noch C++. Die richtige Antwort wär gewesen: "Geht nicht. Übrigens, malloc sollte man nicht verwenden, es gibt new/delete, bzw. Containerklassen".

    Im C-Forum wär die Antwort gewesen: "Geht nicht. Übrigens castet man den Rückgabewert von malloc nicht." - worauf der Fragesteller verwundert gepostet hätte, dass sein Compiler das ohne Cast nicht annimmt, worauf jemand (wahrscheinlich ich) wieder nen dicken Hals bekommen hätte und verlangt hätte, das ins C++ Forum zu verschieben 😉



  • Jonas Klein schrieb:

    dann mach es besser, oh cpp guru

    1. besser machen? cpp guru? ich habe von dir hier bissher nur fehler gesehen. also bitte! man muss keine guru sein um zu sehen, was du für fehler machst!

    Fehler? Welche Fehler? Du hast ja nicht mal Ahnung was die obenstehenden Codezeilen bedeuten und dann behauptest dass ich Fehler mache? Auf jeden Fall werde mit einem Troll wie dir nicht weiter streiten, es macht einfach kein Sinn, du bist eh verloren...



  • Fehler? Welche Fehler? Du hast ja nicht mal Ahnung was die obenstehenden Codezeilen bedeuten und dann behauptest dass ich Fehler mache? Auf jeden Fall werde mit einem Troll wie dir nicht weiter streiten, es macht einfach kein Sinn, du bist eh verloren...

    oh mann du bist echt eine niete! du kannst nichteinmal deine fehler zugeben. und zu bewerten was ich kann und was nicht, dazu bist du überhauptnicht im stande. du kennst mich überhauptnicht!
    zu den fehlern: ich habe dich einmal korrigiert. da hast du mich schonmal angemuckt und das ging dann wiederum nach hinten los, weil ICH recht hatte. hier ist es änlich. du machst nen fehler und stehst nichtmal dazu und wirst ausfallend, wenn du drauf hingewiesen wirst.



  • Das ist natürlich wahnsinnig dramatisch und sicherlich auch von allgemeiner Bedeutung, aber vielleicht schaltet Ihr mal einen Gang zurück, die Leser danken es Euch.


Anmelden zum Antworten