g++ segmentation fault

Dietmar Guhe dguhe at Mathematik.Uni-Bielefeld.DE
Wed Apr 26 15:31:56 CEST 2000


On Wed, 26 Apr 2000, Peter Ohlerich wrote:

> Dietmar Guhe wrote:
> > ...
> > Verstehe ich nicht. b ist doch schon ein Pointer auf Character. Warum
> > sollte man von diesem Pointer wieder die Addresse nehmen (&b). Bei mir
> > laeuft das ganze durch, wenn ich a=b einsetze. Oder hab ich das Problem
> > nicht verstanden?
> > 
> > Dietmar
> 
> Hallo!
> 
> Wenn wir den armen Frager noch weiter verwirren wollen, dann ist es
> jetzt Zeit dringend die Sache mit new/delete bzw. malloc/free auf den
> Tisch zu packen ;-)

Also: 

char *a;
a[2]='2'; 

macht folgendes. a ist ein Pointer auf ein Feld von Charackter's. D.h.
noch nicht, das die Stelle auf die a zeigt auch frei ist. Darum muss sich
der Programmierer schon noch kuemmern. Ein 

char *a; *a = '2'; 

gibt also eine Segmentation fault, weil bei a kein Platz ist.  

Erreichen kann man das z.B. durch 

char a[5];

Damit werden die Speicherstelle a, a+1, ... a+4 fuer das laufende Programm
reserviert. :-)  und jetzt ist auch ein 

a[2] = '2'; 

moeglich. Hier wird die Speicherstelle a genommen, um 2 erhoeht und an die
Stelle dann der ascii-wert von 2 geschrieben. (Stichwort:
Pointerarithmetik).
 
Alles klar?


Dietmar

-- 
Windows User vs. Linux User: 
Die einen befolgen (legen Sie die .. in Laufwerk .. ein)
und die anderen geben (mount ..) Anweisungen.
http://www.mathematik.uni-bielefeld.de/~dguhe/
------------------------------------------------------




-
Hinweise zur Benutzung dieser (und anderer Mailing-Listen) bitte beachten:
--> http://lug-owl.de/mailinglist_hints.html <--



More information about the Linux mailing list