Ansicht umschalten
Avatar von O'Neil
  • O'Neil

mehr als 1000 Beiträge seit 06.09.2001

Re: Für mich eine Totgeburt, leider...

Speicherlecks sind nur insofern ein Problem, als sie früher oder später...in der Regel früher als erwartet, den Speicher auffressen, der dem Prozeß zur Verfügung gestellt wurde, weil er eben nicht beizeiten freigegeben wurde. Bufferoverflows und Zugriffsverletzungen haben andere Ursachen:
Pufferüberläufe rühren von (un)absichtlichen Versuchen einen Speicherbereich mit mehr Daten zu befüllen, als Platz reserviert wurde.
Zugriffsverletzungen sind Versuche auf Speicherbereiche zuzugreifen, die nicht (mehr) dem Prozeß zur Verfügung stehen. Diese werden in aller Regel vom Betriebssystem erkannt und entsprechend mit Exceptions quittiert. Häufig bekommt man das bei Sprachen, die schwache Typisierung haben, und wenn man mit Pointern hantiert, ohne zu wissen, was genau da passiert. Beides eine Spezialität von C/C++

Während also Speicherlecks und AVs im worst case eine Applikation lahm legen. Können Pufferüberläufe im worst case dazu genutzt werden, einen kompletten Rechner zu kompromittieren.

Speicherlecks kann man mit GC in den Griff bekommen, was allerdings zu Lasten der allgemeinen Performance geht - irgendwie müssen die Müllmänner ja feststellen, ob sie das Objekt, daß sie gerade in den Händen halten wegwerfen dürfen oder nicht. Oder man kümmert sich eben selbst drum, was ja nun auch nicht wirklich aufwändig ist.

Pufferüberläufe sind mit modernen und ernst zu nehmenden Sprachen nach C/C++ eigentlich kaum noch ein Thema, da sie zum einen Bereichsprüfungen automatisieren und zum anderen ihre Puffer nicht in einem Stack sondern Heap organisieren, was wohl deutlich schwieriger zu manipulieren ist.

O'Neill

Bewerten
- +
Ansicht umschalten