Anzeige:
Ergebnis 1 bis 6 von 6

Thema: Zeiger in mehreren Programmen gleichzeitig verwenden?

  1. #1
    Registrierter Benutzer
    Registriert seit
    28.10.2003
    Beiträge
    42

    Zeiger in mehreren Programmen gleichzeitig verwenden?

    Wenn ich mit bla* blaBla = new bla(); einen Zeiger erstelle, dann ist der Zeiger direkt in meinem Programm, aber wo ist das Objekt? Wenn ich mich nicht täusche, ist das Objekt nicht nur in der einen Anwendung... also müsste es theoretisch gehen, dass zwei Andwendungen einen Zeiger auf das Selbe Objekt haben.

    Um das was ich meine etwas genauer zu Beschreiben mal ein Beispiel. Ich hab ein Grafisches Objekt auf dem Bildschirm, und mehrere Anwendungen sollen Änderungen daran vornehmen, und dabei alle einen Zeiger auf das Objekt enthalten. Ist das möglich, oder nicht?

  2. #2
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    das Objekt ist irgendwo im RAM, auf dem Heap.

    Ich kann nicht wirklich C++ (bin gerade am Anfangen, tut aber recht harzig das Zeugs) aber es erscheint mir möglich. Allerdings läufst du da geradewegs auf lustige Synchronisationsprobleme zu, wie man sie vom Multithreading her kennt.

    Viel Spass

    MfG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  3. #3
    Registrierter Benutzer Avatar von tuxipuxi
    Registriert seit
    30.08.2002
    Beiträge
    667
    hi,

    Wenn ich mit bla* blaBla = new bla(); einen Zeiger erstelle, dann ist der Zeiger direkt in meinem Programm, aber wo ist das Objekt? Wenn ich mich nicht täusche, ist das Objekt nicht nur in der einen Anwendung... also müsste es theoretisch gehen, dass zwei Andwendungen einen Zeiger auf das Selbe Objekt haben.

    wenn ich mich nicht taeusche, ist das objekt dann im process space deines prozesses, und auf den kann kein anderes programm zugreifen. wenn du objekte sharen willst, musst du shared memory programmieren.

    Bei Widgets transfomiert das toolkit glaub ich die system events in eigene events, die dann vom entwickler gehandelt werden, zeiger auf diese widgets kriegt keine andere applikation.

    gruss,
    tuxipuxi.

  4. #4
    Registrierter Benutzer
    Registriert seit
    08.07.2002
    Beiträge
    719
    Wenn du versuchst, von einem Programm aus auf den Speicherbereich eines anderen zuzugreifen, bekommst du den beliebten Segmentation Fault (Schutzverletzung). Wenn das nicht so wäre, könnte man durch Unachtsamkeit bei einem Pointer auf ein Array leicht mal was von anderen Programmen überschreiben

  5. #5
    Registrierter Benutzer
    Registriert seit
    16.09.2002
    Beiträge
    73
    1. es geht nur mit shared Memory. d.h. In dem einen Prog musst Du explizit angeben, dass Du einen bestimmten Speicherbereich von mehreren Programmen nutzen willst.

    2. Du wirst extreme Sync-Probleme bekommen, ausserdem ist der Zeiger des einen Programmes nicht auch unbedingt der eines anderen (vom Zeiger-wert her) wegen protected Mode und Paging und so Sachen.

    3. Es gibt eine Bibliotek, mit der man genau das machen kann, was Du willst. Wie die heisst hab ich grad vergessen aber die war in einer der letzten LinuxUser/Magazin erklaert.

  6. #6
    Registrierter Benutzer
    Registriert seit
    05.09.2002
    Ort
    Neuhausen
    Beiträge
    320
    Shared memory ist System-Sache. Unter Linux ist das mit shm möglich: "man -k ^shm" zeigt eine Übersicht der Wichtigsten Funktionen.

    Gleichzeitig willst du den Speicherbereich vor gleichzeitigem Zugriff schützen. Das kannst du mit Semaphoren erledigen. (man -k ^sem)

    Gruss, Andy

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •