segmentation fault
Täällä voit kysyä mistä tahansa Mac-ongelmasta, jos et löydä vastausta muualta.
3 viestiä
• Sivu 1/1
-
- Viestit: 181
- Liittynyt: 25.2.2004 klo 15.31
- Paikkakunta: Helsinki
segmentation fault
Viesti Kirjoittaja saha »
Osaako kukaan selittää mitä virheilmoitus "segmentation fault" Terminalissa tarkoittaa? Terminal heittää tällaisen kommentin kun työkoneen softa kaatuu? Pystyykö tuosta ilmoituksesta päättelemään mitään? Mitään muuta ilmoitusta ei tule.
-
- Viestit: 18040
- Liittynyt: 20.2.2004 klo 23.12
- Paikkakunta: Tampere
Re: segmentation fault
Viesti Kirjoittaja Jamac »
Guuglee ... :-P
11.8.1. Segmentation Fault
A segmentation fault occurs when your program tries to access memory locations that haven't been allocated for the program's use. Here are some common errors that will cause this problem:
scanf("%d", number);
In this case, number is integer. scanf() expects you to pass it the address of the variable you want to read an integer into. But, the writer has fogotten to use the `&' before number to give scanf the address of the variable. If the value of number happened to be 3, scanf() would try to access memory location 3, which is not accessible by normal users. The correct way to access the address of number would be to place a `&' (ampersand) before number:
scanf("%d", &number);
Another common segmentation fault occurs when you try to access an array index which is out of range. Let's say you set up an array of integers:
int integers[80];
If, in your program, you try to use an index (the number within the brackets) over 79, you will ``step out of your memory bounds'', which causes a segmentation fault. To correct this, rethink your array bounds or the code that is using the array.
11.8.1. Segmentation Fault
A segmentation fault occurs when your program tries to access memory locations that haven't been allocated for the program's use. Here are some common errors that will cause this problem:
scanf("%d", number);
In this case, number is integer. scanf() expects you to pass it the address of the variable you want to read an integer into. But, the writer has fogotten to use the `&' before number to give scanf the address of the variable. If the value of number happened to be 3, scanf() would try to access memory location 3, which is not accessible by normal users. The correct way to access the address of number would be to place a `&' (ampersand) before number:
scanf("%d", &number);
Another common segmentation fault occurs when you try to access an array index which is out of range. Let's say you set up an array of integers:
int integers[80];
If, in your program, you try to use an index (the number within the brackets) over 79, you will ``step out of your memory bounds'', which causes a segmentation fault. To correct this, rethink your array bounds or the code that is using the array.
Alihankintana printtipuolen graafista materiaalia!
-
- Viestit: 395
- Liittynyt: 23.2.2004 klo 21.26
Re: segmentation fault
Viesti Kirjoittaja Micael »
Jees,
erityisesti ohjelmoitaessa mm. C:llä tuo Segmentation Fault on ainakin mulle vähän turhankin
yleinen virheilmoitus. Kuten Jamac tuossa yllä selventääkin Segmentation Fault liittyy usein
muistiongelmiin.
Oletetaan, että olet esim. ohjelmoimassa asiakasrekisteriä:
* Olet jostain kumman syystä kiinnittänyt asiakasrekisterin koon vaikkapa 50 tietueen mittaiseksi.
* Sitten yrität esim. lisätä uuden, 51.tietueen rekisteriisi, vaikket olekaan varannut muistia sitä
varten.
* Tulos: segmentation fault.
Ehkäpä helpoin tapa välttää Segmentation Fault on käyttää dynaamista muistinosoitusta ja
varata aina vain tarvittaessa lisää muistia sen sijaan, että käyttäisi kiinteämittaisia muistimääriä.
Eipä tästä siis paljonkaan apua ole.. Segmentation Fault on inhottavan ylimalkainen virheilmoitus, jonka
alkuperää ei ole aina mitenkään helppoa löytää edes debuggerin avulla. Voisi auttaa asiaa, jos osaisit
hieman kertoa tilanteesta, missä softa kaatuu..
erityisesti ohjelmoitaessa mm. C:llä tuo Segmentation Fault on ainakin mulle vähän turhankin
yleinen virheilmoitus. Kuten Jamac tuossa yllä selventääkin Segmentation Fault liittyy usein
muistiongelmiin.
Oletetaan, että olet esim. ohjelmoimassa asiakasrekisteriä:
* Olet jostain kumman syystä kiinnittänyt asiakasrekisterin koon vaikkapa 50 tietueen mittaiseksi.
* Sitten yrität esim. lisätä uuden, 51.tietueen rekisteriisi, vaikket olekaan varannut muistia sitä
varten.
* Tulos: segmentation fault.
Ehkäpä helpoin tapa välttää Segmentation Fault on käyttää dynaamista muistinosoitusta ja
varata aina vain tarvittaessa lisää muistia sen sijaan, että käyttäisi kiinteämittaisia muistimääriä.
Eipä tästä siis paljonkaan apua ole.. Segmentation Fault on inhottavan ylimalkainen virheilmoitus, jonka
alkuperää ei ole aina mitenkään helppoa löytää edes debuggerin avulla. Voisi auttaa asiaa, jos osaisit
hieman kertoa tilanteesta, missä softa kaatuu..
3 viestiä
• Sivu 1/1
Palaa sivulle “Ongelmia Macin kanssa?”
Hyppää
- Yleiset aiheet
- ↳ Ajankohtaista Apple-maailmasta
- ↳ Käyttöjärjestelmät
- ↳ Ohjelmat
- ↳ Yleiskeskustelu
- Mac ja oheislaitteet
- ↳ Yleiskeskustelu laitteista
- ↳ MacBook, MacBook Pro ja MacBook Air
- ↳ iMac
- ↳ Mac mini
- ↳ Mac Pro ja Mac Studio
- ↳ Ongelmia Macin kanssa?
- iPhone, iPad ja Apple Watch
- ↳ iPhone-, iPad- ja Apple Watch -laitekeskustelu
- ↳ iPhone-, iPad- ja Apple Watch -ohjelmat sekä iOS
- ↳ Ongelmia iPhonen, iPadin tai Apple Watchin kanssa?
- Huviksi ja hyödyksi
- ↳ Off-topic
- ↳ Kuva ja graafinen suunnittelu
- ↳ Audio ja musiikki
- ↳ Video, televisio ja elokuvat
- ↳ Pelit ja pelaaminen
- ↳ Ohjelmointi, skriptit ja palvelimet
- ↳ Tietoturva ja varmuuskopiointi
- ↳ Verkot, mobiilidata ja muut puhelimet
- ↳ Retronurkka
- ↳ Foorumin ylläpito
- Kauppapaikka
- ↳ Myydään Mac
- ↳ Myydään iPhone, iPad ja iPod
- ↳ Myydään muut Applen tuotteet
- ↳ Myydään muuta tietotekniikkaa
- ↳ Ostetaan Mac
- ↳ Ostetaan iPhone, iPad ja iPod
- ↳ Ostetaan muut Applen tuotteet
- ↳ Ostetaan muuta tietotekniikkaa
- ↳ Vaihdetaan, annetaan, työtä haetaan ja tarjotaan
- ↳ Kauppapaikan keskustelu ja hintavinkit