Dangling Pointers



  • es sollte auch keine dangling pointers geben, sonst wird es sehr schnell sehr ungemütlich. der punkt aber ist: so ein system wie du es dir vorstellst ist nicht mal halbwegs vernünftig implementierbar. man kann nur ganz wenige spezialfälle abdecken - aber es scheitert bereits an einem einfachen std::vector.

    Ging ja auch nicht um die Eierlegende Wollmilchsau, sondern darum seinen eigenen Kram zu verwalten. Ob das nun funktioniert in dem Anwendungsfall oder überhaupt Sinn macht, kann wohl kaum jemand sagen, da wir ja nicht einmal wissen was er vorhat.



  • Shade Of Mine schrieb:

    und er holt den speicher über ::operator new und geht somit komplett an jedem system dass du dir ausdenken kannst vorbei.

    Was ist mit der Überladung des new -Operators?



  • Nexus schrieb:

    Shade Of Mine schrieb:

    und er holt den speicher über ::operator new und geht somit komplett an jedem system dass du dir ausdenken kannst vorbei.

    Was ist mit der Überladung des new -Operators?

    ::operator new bekommt nur die anforderung: allokiere mir X Bytes.
    welche sinnvollen daten willst du daraus ableiten?



  • Man könnte doch eine Klasse schreiben, die jedesmal bei new -Aufrufen informiert wird und sich dann den belegten Speicherbereich merkt (von mir aus in einem dynamischen Array mit malloc() ). Bei delete wird dann geprüft, ob der Bereich gültig ist.

    Ich hab sogar schon selber mal was ähnliches geschrieben, natürlich noch nicht ausgereift...



  • Nexus schrieb:

    Man könnte doch eine Klasse schreiben, die jedesmal bei new -Aufrufen informiert wird und sich dann den belegten Speicherbereich merkt (von mir aus in einem dynamischen Array mit malloc() ). Bei delete wird dann geprüft, ob der Bereich gültig ist.

    Und welche Information hast du dann?
    Dann kann man gleich IsBad?Ptr nehmen. Die information bringt dir nämlich nichts. Du kannst nur sagen ob der Speicher allokiert ist oder nicht.

    Du weisst nicht ob dort ein Objekt lebt und welchen Typ es hat.



  • Ah sorry, dann hab ich die Fragestellung falsch verstanden. Ich bezog mich nämlich auf:

    DonnerCobra schrieb:

    Gibt es eine Möglichkeit herauszufinden, ob eine Speicherstelle freigegeben ist, oder nicht?

    Aber das Beispiel von dir vorher könnte man doch trotzdem (einfach sehr umständlich) behandeln, indem man Speicherbereiche noch nach der Freigabe überwacht...?



  • Nexus schrieb:

    Ah sorry, dann hab ich die Fragestellung falsch verstanden. Ich bezog mich nämlich auf:

    DonnerCobra schrieb:

    Gibt es eine Möglichkeit herauszufinden, ob eine Speicherstelle freigegeben ist, oder nicht?

    Aber das Beispiel von dir vorher könnte man doch trotzdem (einfach sehr umständlich) behandeln, indem man Speicherbereiche noch nach der Freigabe überwacht...?

    inwiefern überwachen?

    der OP spricht zwar von freigegeben aber in seinem beispiel und in seinem text spricht er von der erkennung von dangling pointers und das ist eben nicht möglich. für alles andere gibt es IsBad?Ptr



  • Shade Of Mine schrieb:

    für alles andere gibt es IsBad?Ptr

    Bloß nicht.
    Hat eigentlich irgendjemand die Seite gelesen, die ich da verlinkt hatte? 🙄



  • audacia|off schrieb:

    Shade Of Mine schrieb:

    für alles andere gibt es IsBad?Ptr

    Bloß nicht.
    Hat eigentlich irgendjemand die Seite gelesen, die ich da verlinkt hatte? 🙄

    Du hast bloss meine Posts nicht gelesen...



  • Na dann.


Anmelden zum Antworten