Speicherfehler abfangen

MFC openGL

Erfahrenes Mitglied
C++ ;Borland Compiler ;Windows

Hallo,

ich würde gerne wissen wie ich per try/catch Speicherfehler abfangen kann.

Problem :

Code:
	int end = maxsize;
	 bool ende = false;
	 for(cursize = 1; cursize < end; cursize++)
	 {
	 try
		 {
		 array[cursize] = values[cursize-1]; <------- HIER wird der fehler auftreten
		 }
		 catch(...)
		 {
			 return true;
		 }
	 }


Irgendwann wird er dort auf nicht mehr definierten Speicher treffen, und dann macht er blödsinn. Wie kann ich dann eine Exeption werfen ? Also if(blödsinn gemacht(array[cursize] = values[cursize-1])) throw....

Oder hat einer eine andere Möglichkeit OHNE Vector Klasse eine Array nicht bekannter Länge und unbekannten Typs in ein gleiches Array zu kopieren ?

Danke und Gruss

MFC OpenGL
 
Irgendwann wird er dort auf nicht mehr definierten Speicher treffen, und dann macht er blödsinn. Wie kann ich dann eine Exeption werfen ? Also if(blödsinn gemacht(array[cursize] = values[cursize-1])) throw....
Da kannst du garnichts machen ausser vorzubeugen. Das Verhalten ist in diesem Fall einfach nicht definiert.
 
Na tolle Wurst.... ;(

Also egal was ich mache, ich brauche entweder die Größe des Arrays, oder die Vector Klasse, sehe ich das richtig ?
 
moin


Warum hast du denn die Größe nicht?
Die größe per konstante Variable zu Definieren ist ja kein ding, aber ich bin sicher das weisst du.

Vor kurzer Zeit gab es hier die Frage ob es möglich sei die größe eines dynamischen Arrays zu ermitteln, mit dem Ergebnis das es nicht geht.


mfg
umbrasaxum
 
MFC openGL hat gesagt.:
Na tolle Wurst.... ;(

Also egal was ich mache, ich brauche entweder die Größe des Arrays, oder die Vector Klasse, sehe ich das richtig ?

Ja. Da c/c++ bei den Zugriff auf ein array nicht weiss wie gross es ist. Wenn du zb. ein fuenf-elementiges int array anlegst und auf Element 6 versuchst zuzugreifen, greift c/c++ auf den Speicherbereich hinter deinem fuenften Element (in der Groesse eines Int) zu. Dort kann dann irgendetwas stehen. D.h. du musst auf alle Faelle wissen wie gross dein Array ist, da du solch einen Fehler nicht auffangen kannst.
Fuer ein try {} catch {}, musst du eben auch irgendwop eine Ausnahme schmeissen .... und dies ist hier gerade nicht der Fall.
 
Habe mir jetzt eine setarraysize(int) und eine int getarraysize() geschrieben, damit gehts natürlich jetzt, nur frage ich mich natürlich wie ein Prof eine solche Aufgabe stellen kann, wenn es eigendlich keine Lösung gibt, denn ich erfülle jetzt nicht mehr die Anforderung bezüglich der vorgegebenen Methoden...

Trotzdem vielen Dank an Euch
Gruss

MFC OpenGL




@umbrasaxum
Der Typ mit der Frage bezüglich dynamischem Array war auch ich...
 
moin


Aha, hatte jetzt nciht mehr nachgeguckt.

Wäre aufjedenfall nett wenn du dann nochmal schreiben würdest wie dein Professor sich das vorgestellt hat. Also nachdem du die Lösung hast.


mfg
umbrasaxum
 
Die Frage habe ich schon in einer netten Mail mit Blick auf diesen Thread verfasst, mal schaun was für eine Antwort kommt, evtl werden wir ja dann alle mächtig schlauer ;)
 
@umbrasaxum

Hab ne Antwort gekommen die euch freuen wird... ES GEHT NICHT ;) Denen ist das aber jetzt auch aufgefallen, und haben jetzt ein Zeichen als "Endezeichen" definiert, leider kann man das Zeichen jetzt nicht mehr benutzten... (finde das zwar dämlich, aber was soll man gegen Profs machen...)

Nochmals danke an alle die sich deswegen den Kopf zerbrochen haben *g*

Thx und Gruß

MFC OpenGL
 
Zurück