Konvertierung void* <-> BYTE*



  • hallo,

    ist es irgendwie möglich von void* in BYTE* und zurück zu konvertieren? Der Hintergrund ist, dass ich mit RGB-Farbdaten als BYTE* arbeite. BITMAP gibt mir aber einen void-pointer zurück.

    danke schonmal

    mfg, TFTS



  • Hallo,
    BYTE ist zwar kein C++ Datentyp, ein static_cast sollte es aber dennoch tun.



  • vielleicht hätte ich dazu sagen sollen, dass ich noch nich ganz so gut in der programmierung bin. Wie kann ich so einen static cast machen?

    mfg, TFTS

    PS: wo kann man den BYTE typ denn da einordnen, wenn es kein C++ datentyp ist



  • TFTomSun schrieb:

    Wie kann ich so einen static cast machen?

    So:

    void* pVoid = ...;
    BYTE* pByte = static_cast<BYTE*>(pVoid);
    


  • vielen dank!

    wie ist das dann eigentlich mit dem löschen der pointer? reicht es wenn ich einen von beiden lösche oder muss ich beide löschen?

    mfg, TFTS



  • Da beide Pointer auf den selben Bereich zeigen, darfst du nur einen von ihnen löschen.



  • TFTomSun schrieb:

    wie ist das dann eigentlich mit dem löschen der pointer? reicht es wenn ich einen von beiden lösche oder muss ich beide löschen?

    Du löscht nicht den Pointer, sondern die Daten auf die er zeigt. Deshalb solltest du dir erstmal die spannende Frage stellen, ob du den Speicher denn überhaupt besitzt, auf den da gezeigt wird.
    Falls dem so sein sollte (was in deinem Beispiel erstmal nicht so klingt), so löscht man das, worauf der Zeiger zeigt natürlich nur einmal. Beim Löschen muss der Zeiger dann auch den richtigen Typ haben. Sonst geht das sowieso in die Hose. Außerdem brauchst du das Wissen, wie der Speicher, auf den gezeigt wird, beschafft wurde um ihn wieder korrekt freigeben zu können. (new/new[]/malloc/irgendwas eigenes).



  • naja, ich wusste jetz bloß nicht ob die daten kopiert werden oder ob nur ein anderer pointer mit dem static cast darauf gesetzt wird. deswegen hab ich das gefragt.

    danke,

    mfg, TFTS


Anmelden zum Antworten