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