Archiv verlassen und diese Seite im Standarddesign anzeigen : Zeiger in mehreren Programmen gleichzeitig verwenden?
Firebird
27-11-2003, 19:17
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?
peschmae
27-11-2003, 20:19
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 :D
MfG Peschmä
tuxipuxi
27-11-2003, 20:50
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.
axeljaeger
28-11-2003, 13:55
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
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.
RapidMax
29-11-2003, 13:26
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
Powered by vBulletin® Version 4.2.5 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.