Nach Variablen/Objekten im Arbeitsspeicher suchen?



  • Hallo!

    Ich kann mir jmd. sagen, wie man im Arbeitsspeicher nach Objekten/Variablen suchen kann und die Addresse darauf zurückliefern kann?

    Danke schonmal.
    Ich habe keinen blassen Schimmer.

    Ps. Evtl. habt ihr Tutorials, Codeschnipsel dafür?
    Dankeschön. 🙂



  • Das geht nicht. Entweder du hast einen Zeiger auf ein Objekt oder nicht. Es gibt keine portable (und auch sonst keine sinnvolle) Möglichkeit den Heap nach Objekten zu durchsuchen.



  • dynamic_cast



  • es gibt nur die brute-force methode und die ist verdammt gefährlich, weil du nie wissen kannst ob du grade irgend ein primitives array oder einen komplexen typ/ein polimorphes objekt hast



  • Aber gibt's nicht sowas wie Serialisierung?

    Irgendwie müsste man doch, wenn das Objekt finden können.

    Hat keiner 'ne Idee?



  • Wie r0nny sagte, gibt es eine Brute-Force Methode - du könntest den gesamten Speicher per memcmp() nach etwas durchsuchen, das so aussieht wie dein Objekt. Aber erstens liegen im Speicher nur Bits und Bytes ohne Struktur (da könntest du durchaus auf eine Bytefolge stoßen, die zufälligerweise so aussieht wie dein Objekt), zweitens sind gerade Klassen nicht unbedingt auf binärer Ebene vergleichbar (gerade wenn sie dynamischen Speicher verwalten) und drittens verhindert möglicherweise das Betriebssystem, daß du den gesamten Speicher zu sehen bekommst (Access Violation).

    Also solltest du besser aufpassen, daß du deine Objekte nicht verlierst 😉

    PS: Was genau hast du eigentlich vor?



  • Klabauter schrieb:

    Aber gibt's nicht sowas wie Serialisierung?

    Irgendwie müsste man doch, wenn das Objekt finden können.

    Hat keiner 'ne Idee?

    Ja, finden tut man seine Objekte, in dem man sich z.B. einen Pointer merkt. Das Ding ist genau dafür gedacht! Wenn dir das zu umständlich ist, kannst du auch Smartpointer verwenden.

    Leg deine Objekte einfach in einem dynamischen Container ab. Solche Container sind reichlich in der Standardlib von C++ vorhanden.

    Ich denke mal, du hast die merkwürdige Vorstellung von "Objekte im Hauptspeicher suchen", weil du ganz einfach nicht das Wissen über die Standardlib und somit die eigentliche Technik über "Objekte im Speicher ablegen" hast?



  • Klabauter schrieb:

    Aber gibt's nicht sowas wie Serialisierung?

    Irgendwie müsste man doch, wenn das Objekt finden können.

    ...

    😕 😕 😕
    Was hat denn das Eine mit dem Anderen zu tun ?

    Gruß,

    Simon2.


Anmelden zum Antworten