Speicher vor Schreibzugriffen schuetzen

Hallo Experten!

Wie kann ich in meinem Programm einen Speicherbereich den ich mit

char geschuetzt[255]; 

angelegt habe vor dem Ueberschrieben werden schuetzen?

Eigentlich sollte er doch sicher sein, wird aber trotzdem ueberschrieben.

Laut Debugger liegt der Speicher hinter dem Ende eines 512k grossen Arrays aus selbstgebauten Klassen.
Er wird, wenn ich dieses Array mit Daten fuelle ueberschrieben.
Das ist nicht gut, da „geschuetzt“ eine globale Variable ist, die einen Pfad enthaelt.

Wie kann ich das dem Program austreiben?

System: Borland C++ Builder4, Win NT 4

Besten Dank, Christof

Wenn Dein geschuetzt hinter dem Array mit Deinen Klassen liegt hast Du dort einen Fehler. Du überschreitest sicherlich in irgendeiner Schleife das Array der 512 Objekte.

Einen direckten Schreibschutz für Speicher gibt es nicht.
Da hilft nur ordentlich Programmieren und keine grenzwerte des Array’s überlaufen.

Gruß

Micha

Wenn Dein geschuetzt hinter dem Array mit Deinen Klassen liegt
hast Du dort einen Fehler. Du überschreitest sicherlich in
irgendeiner Schleife das Array der 512 Objekte.

Komisch, das Array hat eigentlich viel Reserve.
Es kann maximal 2048 Objekte mit jeweils einem Integer und maximal 256 char aufnehmen. (Ok, sind ein bischen mehr als 512 Kb)
Derzeit nimmt es 1024 dieser Objekte auf, muesste eigentlich noch massig Platz sein.
Auch wenn es nur 1024 Objekte mit je 128 char aufnimmt wird mein Pfad ueberschrieben.

Einen direkten Schreibschutz für Speicher gibt es nicht.
Da hilft nur ordentlich Programmieren und keine grenzwerte des
Array’s überlaufen.

Werd alles nochmal untersuchen.

Danke fuer die superschnelle Antwort, Christof

Wenn Dein geschuetzt hinter dem Array mit Deinen Klassen liegt
hast Du dort einen Fehler. Du überschreitest sicherlich in
irgendeiner Schleife das Array der 512 Objekte.

Hab jetzt mal sowas probiert:

char \*geschuetzt;

geschuetzt = new char[255]; //beim Programmstart

delete geschuetzt; //beim Programmende

das Feld auf das geschuetzt jetzt zeigt liegt komischerweise noch vor der Addresse des allerletzten moeglichen Array-Elements.
Das liegt doch nicht an mir?

Einen direckten Schreibschutz für Speicher gibt es nicht.
Da hilft nur ordentlich Programmieren und keine grenzwerte des
Array’s überlaufen.

Hab bisher noch keinen unzulaessigen Wert gefunden.

Gruss, Christof

Wo der Speicher liegt kann Dir als Programmierer eigentlich egal sein. Du hast auch keine besondere Möglichkeit darauf einfluß zu nehmen.

Schick doch mal den Source, dann kann ich besser helfen.

Micha