Zeiger auf Speicheradresse



  • Hi,
    ich habe ein kleines Problem. Folgendes, ein Zeiger soll auf ein bestimmtes Segment:Offset zeigen (beispielsweise 0041Ch)
    Wie kann ich nun einen Zeiger auf diese Adresse legen?

    Danke @all



  • Versuch doch mal das hier, weiß abder nicht ob das geht:

    char* Zeiger;
    Zeiger = 0x0041;
    


  • Segment und Offset riecht nach DOS-Programmierung, also alles folgende ist kein Standard-C++, sondern Borland/Turbo C++ spezifisch (DJGPP vielleicht auch?)

    #include <dos.h>
    char far * my_far_pointer = MK_FP(0, 0x41C); /* make far pointer 0000:041c */
    


  • Sobald ich eine Variabel anlege kann ich ohne Prob auf den Adressbereich zugreifen. Kann mir jemand sagen warum es ohne Variable nicht geht?

    Achso, folgende Fehlermeldung bekomme ich: expression must be a pointer or a zero constant.

    Bisher funktioniert keine Lösung... 😞

    wer weitere Lösungsmöglichkeiten hat... immer her damit 🙂



  • der entsprechende Code wär noch nützlich ...



  • Sobald ich eine Variabel anlege kann ich ohne Prob auf den Adressbereich zugreifen. Kann mir jemand sagen warum es ohne Variable nicht geht?

    Nun ja, ich wuerde sagen, weil dir der Speicherbereich unter Umstaenden nicht
    gehoert.

    mfg
    v R



  • Naja, mein bisheriges Programm hat noch nichts mit dem nun benötigten Code zu tun. Ich möchte halt ganz genau sagen, lies mir immer die Werte von genau dieser Speicherstelle ein. Mit reinem Assembler kann ich das machen... aber es muss doch auch ohne asm gehn. Kann ich überhaupt von Hand eine Speicherstelle an den Zeiger übergeben?



  • Kann ich überhaupt von Hand eine Speicherstelle an den Zeiger übergeben?

    Ja, aber du kannst weder davon lesen noch schreiben, weil dir der Speicher-
    bereich nicht gehoert.

    mfg
    v R



  • Hallo,

    ich habe so ein Ergebnis, unter Linux funktioniert, muß man unter anderen Systemen testen.

    int mem_addr=0x0041;
    int* ptr_of_int;
    long* ptr_of_long;
    char* ptr_of_char;

    ptr_of_int = (int*)mem_addr;

    ptr_of_long = (long*)mem_addr;

    ptr_of_char = (char*)mem_addr;

    Gruß,
    Andreas



  • Original erstellt von virtuell Realisticer:
    Ja, aber du kannst weder davon lesen noch schreiben, weil dir der Speicher-
    bereich nicht gehoert.

    Ich würde sagen, das kommt ganz auf das OS an


Anmelden zum Antworten