Void-Pointer



  • Hallo zusammen !
    Ist es eine gute Idee einen Void-Pointer hochzuzählen um eine bestimme Speicherstelle zuerreichen ?
    Bsp:

    int byteoffset = 100;
    void * temp = getAddress() + byte;
    

    getAddress() liefert einen Void Pointer.

    Ich bin der Meinung ,dass das nicht gut ist da die Adressengröße von System zu System unterschiedlich sein können.

    Was ist eure Meinung ?



  • Addition auf einen void-Pointer ist durch den Standard nicht definiert, weil void ein unvollständiger Typ ist. Um standardkonform zu sein, musst du nach char* o.ä. casten.

    Ob es sinnvoll ist, so etwas überhaupt zu tun, hängt davon ab, was du damit erreichen willst. Regelmäßig sollte man so etwas nicht brauchen, aber wenn du auf einem uC ohne Betriebssystem herumfuhrwerkst, mag es dafür Anwendungsfälle geben. Damit, wie breit Speicheradressen auf der Zielplattform sind, hat es aus meiner Sicht aber wenig zu tun.



  • void heisst auf Deutsch "nichtig / ungültig". Ich meine, das sagt schon alles! 🙂



  • harryherold schrieb:

    Ist es eine gute Idee einen Void-Pointer hochzuzählen um eine bestimme Speicherstelle zuerreichen ?

    Der gcc setzt hier gern sizeof(void)==1, d.h. damit kannst du dein "Hochzählen" (standardinkonform) durchführen.



  • Da du von Byte redest, solltest du schon nach char* casten.

    malloc() gibt auch einen void* zurück und damit kann man gut arbeiten 😉


Anmelden zum Antworten