Anzeige:
Ergebnis 1 bis 4 von 4

Thema: mal wieder segfault

  1. #1
    Registrierter Benutzer
    Registriert seit
    01.04.2008
    Beiträge
    18

    mal wieder segfault

    ... was ist an diesem code falsch:

    Code:
            int primes[2000] = { 0 };
            int p, try = 0;
            primes[p] = 2;
    das programm liefert mir einen segfault, gdb sagt mir:

    Code:
    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

  2. #2
    Registrierter Benutzer Avatar von BLUESCREEN3D
    Registriert seit
    08.11.2002
    Beiträge
    665
    Zitat Zitat von xzm Beitrag anzeigen
    Code:
    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

  3. #3
    Registrierter Benutzer Avatar von Boron
    Registriert seit
    07.01.2002
    Beiträge
    827
    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.
    Gruß Boron (der sich oft wegen mieser Rechtschreibung anderer die Augen reiben muss)

    LINUX IS LIKE AN INDIAN TENT: NO GATES, NO WINDOWS AND AN APACHE INSIDE!
    Hardware Monitoring unter Linux -> http://santafu.sourceforge.net (Temperaturen, Lüfterdrehzahlen und Spannungen)

  4. #4
    Registrierter Benutzer
    Registriert seit
    01.04.2008
    Beiträge
    18
    Zitat Zitat von BLUESCREEN3D Beitrag anzeigen
    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.

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •