PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : mal wieder segfault



xzm
17-04-2008, 13:24
... was ist an diesem code falsch:


int primes[2000] = { 0 };
int p, try = 0;
primes[p] = 2;

das programm liefert mir einen segfault, gdb sagt mir:


Program received signal SIGSEGV, Segmentation fault.
0x08048411 in main () at prob10_alt.c:9
9 primes[p] = 2;
(gdb)


danke schonmal, vllt lern ichs noch irgendwann ;)

BLUESCREEN3D
17-04-2008, 14:25
int p, try = 0;
Hier wird nur try auf 0 gesetzt und nicht p. Deshalb hat p einen zufälligen Wert.
In gdb: print p

Boron
17-04-2008, 16:27
Da weiß ich wieder warum ich mir angewöhnt habe sämtliche Variablen einzeln zu definieren.

Böse (oder eher: ungeschickt):
int a, b, c = 12;

Gut:
int a = 0;
int b = 3;
int c = 12;

Man sieht halt irgendwie schneller ob die Variablen initialisiert sind, oder nicht.

xzm
17-04-2008, 16:37
Hier wird nur try auf 0 gesetzt und nicht p. Deshalb hat p einen zufälligen Wert.
In gdb: print p

ah, gut zu wissen, dass man variablen getrennt initialisieren muss.