Wie entstehen speicherfehler?

sra

Erfahrenes Mitglied
Hallo

Ich hoffe ich bin nicht der einzige, der solche Fehler hat, und möchte nun mal wissen was die genau aussagen ;)

Es geht um so Speicherfehler in der Art: Die Anweisung von (irgensone Hex Zahl) verweist auf (Hex Zahl); Der Vorgang "read" konnte nicht....

error.jpg


Ich habe diese Fehler eigentlich immer mit vba, in c# ist mir sowas noch nie untergekommen.

Weiss jemand, was es mit diesen kryptischen Fehlern genau auf sich hat?
 
Diese seltsamen Hex-Zahlen sind Speicheradressen. Stell dir den Arbeitsspeicher als eine Art Array vor, auf dem du Elemente über diese Adressen indizieren kannst.

Diese Fehler entstehen dadurch, dass vom Betriebssystem Speicherbereiche geschützt werden, an die man ohne weiteres nicht rankommen darf. Zum Beispiel läuft die Grafikausgabe in einem bestimmten Speicherbereich, den man als Ottonormalprogrammierer nicht verändern kann, sondern nur über Betriebssystemaufrufe. Sonst könnte ja jedes x-beliebige Programm den Desktop verwursten.

In C# (bzw. .NET allgemein) und Java wirst du solche Fehler auch nicht bekommen können, weil diese Programme in einer virtuellen Maschine laufen und nicht direkt auf den Speicher oder die Hardware zugreifen können. Wenn ein C#- oder Java-Programm solche Fehler auslöst, wirft die VM einfach nur eine Exception anstatt solch einen Laufzeitfehler.
 
In vba greife ich ja nicht direkt auf den Speicher zu, zumindest gebe ich keine Adressen an, welche er brauchen soll. Dann ist das also ein Fehler, wo ich nicht direkt Schuld bin, dass er da ist?

Wie kann ich solchen Fehlern entgegenwirken?
 
Du greifst in vba direkt auf den Speicher zu bzw. der Compiler erzeugt Code der darauf zugreift (sonst hättest du nur die Register zur Verfügung und keine Bibliotheksfunktionen - recht wenig). Ich kann dir leider nicht sagen woher das kommt, poste doch einmal (möglichst wenig) Beispielcode bei dem das vorkommt.
 

Neue Beiträge

Zurück