Speicherverletzung?

LordofFrog

Enthusiast
Thread Starter
Mitglied seit
03.11.2007
Beiträge
416
Huhu,

da wir an der FH grad Speicherorganisation behandelt haben, hab ich mir ein kleines programm geschrieben. Ich weis ja, das Windows was dagegen hat, wenn ein Programm in den speicherbereich eines anderen reinguckt.

Code:
#include "stdafx.h"
#include <conio.h>
#include <iostream>
#include "windows.h"
#include "stdio.h"
using namespace std;




int _tmain(int argc, _TCHAR* argv[])
{
     int matrix[3][3];
	 int *speicher=0;
     for(int j =0 ; j<3; j++)
	 {
         for(int i =0 ; i<3; i++)
		 {
	         cout<<"Bitte Element : "<<j+1<<" "<<i+1<<" eingeben!";
			 cin>>matrix[j][i];
		 };
	 };
	 for(int j =0 ; j<3; j++)
	 {
         for(int i =0 ; i<3; i++)
		 {
	         cout<<matrix[j][i]<<"  ";
		 };
		 cout<<"\n";
	 };
	 for(int j =0 ; j<3; j++)
	 {
         for(int i =0 ; i<3; i++)
		 {
	         cout<<&matrix[j][i]<<"  ";
		 };
		 cout<<"\n";
	 };
	 cout<<"\n";
     int s=9;
	 do
     {
	  
	   speicher=speicher + s;
	   s++; 
	   cout<<speicher<<"  "<<*speicher<<"\n";
	 }while(s!=0);
	  
	
	 _getch();




	return 0;
}

wenn ich das prog ungefähr 1 sec laufen lasse bekomme ich im debugger nach dem eingeben der matrize diese Fehlermeldung :"Unbehandelte Ausnahme bei 0x000f4328 in Speicher.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0x00000024."

ist es an dem, dass mir windows verbietet weiter zu machen?

könte ich im DOS das programm normal aufen lassen?

LoF
 
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
ich denke das liegt an dem Betriebsystem. du versuchst ja von adresse 24 zu lesen. das ist schon sehr weit unten. ich denk da kommt man nicht ohne weiteres hin. da liegen vielleicht irgendwelche registerbänke.
 
hab es auch mit anderen speicherbereichen versucht, aber da bricht er dann meistens auch nach 2 bis 3 sec ab mit der gleichen meldung nur dann halt in einem anderen bereich und da meistens bei xx00 ,also wenn er in in einen neuen speicherbereich von zb f3ff nach f400 gehen würde.

es gibt ja unter windows programe, die als zusatz für andere dienen, um bestimmte sachen auszulesen oder das programm erweitern und dazu bestimmte sachen auslesen. läuft das dann über einen stream von dem programm oder eine datei, die das ausgibt und dann weiterverarbeitet wird?

LoF
 
ich hab noch ein problem,

ich habe einen string der eine Hexzahl enthält und möchte den gern in eine integer zahl umwandeln. eine suche bei google ergab: parseInt (Str) .

aber leider hab ich nicht gefunden, welche headerdatei man da braucht, weil mir der compiler immer nichtdefinierter bezeichner beim prüfen ausspruckt.

LoF
 
hm, wenn ich die funktion richtig verstanden habe, prüft sie jede stelle im string und hat dazu einen enumerierten wert und bildet daraus dann die zahl richtig?

also in dem sting steht zb 0023f5e6 und das soll dann zu einer einer zahl werden, die in einen pointer darstellt, als die hexzahl ist quasi eine adresse.

bei meiner suche im web hab ich gefunden, dass es für verschiedene umwandlungen ja schon cast operatoren gibt. gibt es da auch was für Hexzahl in einem string to pointer?
 
Zuletzt bearbeitet:
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh