_
toggle menu eXmatrikulationsamt.de
online: Dominik-jobst | schnusch und 765 gäste

C++ Segmentation fault

was zum geier...
Themen Layout: [Standard] · Linear · Outline Thema abonnieren | Thema versenden | Thema drucken
post 16 Apr 2008, 19:01
avatar
4. Schein
****

Punkte: 470
seit: 01.10.2003

hallo leute...

ich schon wieder mit ner c++ frage...
ich hab mein kleines feines programm...
das ganze is ein math. alg.

man stelle sich ein rechteck vor, in dem ein punkt mit best. eigenschaften liegt
ich versuche den punkt mittels einschließung zu finden... also zerteile ich das rechteck in 4
unterrechtecke usw...

der rödelt das ganze gut durch, bis er auf einmal "Segmentation fault" liefert...

nun die frage: WAS ZUM GEIER IS DAS?"

das komische is halt, dass der ploötzlich und mittendrin aufhört...
durch schrittweise ausgaben auf dem bildschirm, weiß ich ungefähr, wo der hängt...
CODE

double allesdoof(double* ai, int A, int B, int n, double N, int k){
cinterval pz,pA, pB;
cout << "hallo" << endl;
cout << "N: " << N << endl;
cout << "n: " << n << endl;
cout << "k: " << k << endl;
cout << "ai: " << ai[0] << endl;
cout << "A: " << A << endl;
cout << "B: " << B << endl;

und ausgegeben wird:

hallo
Segmentation fault

davor kommt der ohne probleme durch diese stelle...

woran kann es denn liegen???

danke m.


ProfilPM
AntwortenZitierenTOP
post 16 Apr 2008, 19:08
avatar
d00fk0pp
*****

Punkte: 710
seit: 09.05.2005

Wirds nicht mal langsam Zeit für ein gutes Buch? Oder nen Exma-internen Informatik-FB?
ProfilPM
AntwortenZitierenTOP
post 16 Apr 2008, 19:11
avatar
4. Schein
****

Punkte: 470
seit: 01.10.2003

Zitat(CoolSun @ 16 Apr 2008, 19:08)
Wirds nicht mal langsam Zeit für ein gutes Buch?  Oder nen Exma-internen Informatik-FB?
*


naja... das sind schon spezielle sachen... is ja nicht, dass ich mir ne for-schleife erklären lasse...
abgesehen davon sollte ein forum dafür da sein, oder...
ProfilPM
AntwortenZitierenTOP
post 16 Apr 2008, 19:20
avatar
Straight Esh
*********

Punkte: 14030
seit: 01.10.2003

am Besten erst einmal Bekanntschaft mit einem Debugger schließen, um das Problem differenziert
darzustellen. valgrind oder gdb sind gute Adressen. Hilfreich könnte auch strace sein.

Ohne weitere Infos wirste bei c++ kaum dahinter kommen, wo dein Problem liegt. Segmentation fault
deutet doch stark auf einen fehlerhaften Speicherzugriff zu.


--------------------


bonum agere et bonum edere,
sol delectans et matrona delectans

(Verlängere dein Leben indem du hier und hier und hier und hier klickst!)
ProfilPM
AntwortenZitierenTOP
post 16 Apr 2008, 19:37
avatar
der vierkonsonantige
*********

Punkte: 3812
seit: 12.12.2003

versuchs mal in Foren die darauf spezialisiert sind. lies vorher mal ne FAQ und google nach deinem Problem. weiterhin kannst du auch einen deiner älteren c++ threads mit denen du uns ja schon öfters beehrt hast benutzen... (zumindest für das nächste Problem)


--------------------
jeden tag einen dummen kommentar!
hab ich bei den fadfindern gelernt.
bild kann nicht angezeigt werden

bild kann nicht angezeigt werden bild kann nicht angezeigt werden bild kann nicht angezeigt werden bild kann nicht angezeigt werden
"if you have a hammer, every problem looks like a nail"
ProfilPM
AntwortenZitierenTOP
post 16 Apr 2008, 19:42
avatar
d00fk0pp
*****

Punkte: 710
seit: 09.05.2005

Zitat(marco @ 16 Apr 2008, 19:11)
... is ja nicht, dass ich mir ne for-schleife erklären lasse...
abgesehen davon sollte ein forum dafür da sein, oder...
*


Wir erledigen aber nicht deine Belegarbeiten... no.gif
ProfilPM
AntwortenZitierenTOP
post 16 Apr 2008, 19:49
avatar
4. Schein
****

Punkte: 470
seit: 01.10.2003

Zitat(CoolSun @ 16 Apr 2008, 19:42)
Wir erledigen aber nicht deine Belegarbeiten... no.gif
*

oh... entschuldigung... haste ja bis jetzt auch ni gemacht...
es gibt halt studenten, die anderen helfen, wenn die ne frage haben auf einem gebiet, wo se ni bis ins
kleinste detail fit sind...
wenn du nicht helfen willst, dann mach es nicht und fang nicht an zu weinen...
ProfilPM
AntwortenZitierenTOP
post 16 Apr 2008, 20:47

Avatar-Untertitel
*******

Punkte: 1459
seit: 03.04.2006

Vielleicht gibt es ein ai[0] irgendwann nicht mehr? Oder ai dereferenziert auf einen Speicherbereich, der nicht zur Verfügung steht, weil ai vielleicht nicht korrekt initialisiert ist? Es gibt für gcc/g++ einen Debugger genannt `gdb'. Versuche doch mal deinen Code mit g++ -g -ggdb zu kompilieren und anschliessend gdb aufzurufen. Dann noch `run ./meinprogramm' und wenn du Glück hast, zeigt dir der Debugger dann schon recht präzise wo es probleme gibt. Mit help kriegst du eine Hilfe. Vielleicht mal die Befehle `info regs', `bt', und `x' ausprobieren. Literatur wie üblich im Internet.


--------------------
Gebrauchte, geprüfte SATA/IDE (500GB, 160GB, 120GB) Festplatten? --> https://www.exmatrikulationsamt.de/6058033
ProfilPM
AntwortenZitierenTOP
post 16 Apr 2008, 23:08

3. Schein
***

Punkte: 235
seit: 26.09.2006

-

Dieser Beitrag wurde von Knurt: 14 Mar 2009, 20:06 bearbeitet
ProfilPM
AntwortenZitierenTOP
post 16 Apr 2008, 23:32
avatar
Exmatrikulator
*********

Punkte: 2083
seit: 17.08.2006

Also.
Wie schon angesprochen wurde. Buch hilft. Und segfault ist nix "spezielles". Du greifst auf Speicherbereiche zu, in denen du nichts zu suchen hast. Durch deine Iteration - wie auch immer die aussieht, werden sicher irgendwelche Pointer oder Zählvariablen verändert. Entweder greift irgendwann dein Pointer in geschütze Bereiche oder eine deiner Zählvariablen wird über ihre Obergrenze hinaus erhöht.
Leider hast du ja nur eine nichtssagende Dummyfunktion gepostet. Da fliegt vll. der Fehler aber die Ursache liegt anderswo.

Für Programmierfragen wende dich doch mal an die Kompetenzen im HnH smile.gif

btw. "Was ist das?" Das ist das

edit:
Sehe gerade, dass aktsizr ja schon alles gesagt hat. Naja. Doppelt und so..

Dieser Beitrag wurde von stabilo: 16 Apr 2008, 23:34 bearbeitet


--------------------
bild kann nicht angezeigt werden
ProfilPM
AntwortenZitierenTOP
post 17 Apr 2008, 15:11
avatar
4. Schein
****

Punkte: 470
seit: 01.10.2003

kann es sein, dass es sich dabei um ein mac-problem handelt?
hab bei ein bissl googlen festgestellt, dass es ziemlich viele mac-user mit diesem problem gibt...

kennt sich da jemadn aus, um das zu beheben???
danke m.

ps: ich greif definitiv auf keine resource zu, die nicht auch richtig ist...

ich lass mir doch vor dem funk-aufruf alle variablen die da reinkommen ausgeben...
und als erstes nach den funk-start auch nochmal und da kommt der fehler...
das is ja das komische...

es kann sein, dass er speicherprobleme hat, aber was kann ich dagegen machen...
ich programmier meiner meinung nach sehr sauber... und da kommt so ein mist völlig ungelegen...

alles scheiße, dein marco...
ProfilPM
AntwortenZitierenTOP
post 17 Apr 2008, 15:51
avatar
No-Know-How
*****

Punkte: 631
seit: 27.04.2007

Zitat(marco @ 17 Apr 2008, 15:11)
kann es sein, dass es sich dabei um ein mac-problem handelt?

Erst den Fehler bei sich selbst (und im eigenen Code suchen), dann Hersteller verunglimpfen.

Wenn der Fehler tatsächlich in der Funktion auftritt und danach nix relevantes kommt kann nur
CODE
cout << "ai: " << ai[0] << endl;

das Problem sein; ai zeigt auf einen Speicherbereich auf den dein Programm nicht zugreifen darf.
Da mußt du in Ruhe nochmal schauen ob du falsch/nicht allokiert hast oder den ersten Parameter falsch übergibst...


--------------------
Studentenclub Count Down
The future is already here - it is just unevenly distributed. William Gibson
ProfilPM
AntwortenZitierenTOP
post 17 Apr 2008, 15:53
avatar
Straight Esh
*********

Punkte: 14030
seit: 01.10.2003

Zitat(marco @ 17 Apr 2008, 15:11)
es kann sein, dass er speicherprobleme hat, aber was kann ich dagegen machen...
ich programmier meiner meinung nach sehr sauber... und da kommt so ein mist völlig ungelegen...
*


Was kann man bloss dagegen machen? Erstmal versuchen mit diesem Programm - wie nennen es
doch alle? - Debugger klar zu kommen. Und wenn du das verstanden hast, dann kannst du damit
beginnen das Problem einzukreisen. Und wenn du dann genau weißt was das Problem ist, kannst du
hier nocheinmal fragen, was man dagegen tun kann.
ProfilPM
AntwortenZitierenTOP
post 17 Apr 2008, 15:59
avatar
4. Schein
****

Punkte: 470
seit: 01.10.2003

Zitat(Chris @ 17 Apr 2008, 15:53)
Was kann man bloss dagegen machen? Erstmal versuchen mit diesem Programm - wie nennen es
doch alle? - Debugger klar zu kommen. Und wenn du das verstanden hast, dann kannst du damit
beginnen das Problem einzukreisen. Und wenn du dann genau weißt was das Problem ist, kannst du
hier nocheinmal fragen, was man dagegen tun kann.
*

also ich habs mir mal ein bissl mit m debugger angeschaut...
und der läuft genau bis dahin sauber durch und verliert einfach durch den funk-aufruf die werte...

das ganze passiert mehrmals, weil rekursiv... also greife ich die ganze zeit auf die werte zu und auf
einmal will er nicht mehr...

mir scheint, dass es ein mac-problem is... vielleicht mach ich das ganze nächste woche mal auf nem
linux ding... ma guggen...

aber vielleicht hat ja ein apfel-mensch nen hinweis...

ich wette, dass ich da nur am anfang eine befehlszeile einfügen muss, damit dieses mac-problem
unterbunden wird...
ProfilPM
AntwortenZitierenTOP
post 17 Apr 2008, 17:04

Avatar-Untertitel
*******

Punkte: 1459
seit: 03.04.2006

Zitat(marco @ 17 Apr 2008, 15:59)
also ich habs mir mal ein bissl mit m debugger angeschaut...
und der läuft genau bis dahin sauber durch und verliert einfach durch den funk-aufruf die werte...

das ganze passiert mehrmals, weil rekursiv... also greife ich die ganze zeit auf die werte zu und auf
einmal will er nicht mehr...

mir scheint, dass es ein mac-problem is... vielleicht mach ich das ganze nächste woche mal auf nem
linux ding... ma guggen...

aber vielleicht hat ja ein apfel-mensch nen hinweis...

ich wette, dass ich da nur am anfang eine befehlszeile einfügen muss, damit dieses mac-problem
unterbunden wird...
*


...das ist ganz sicher kein mac Problem.
ProfilPM
AntwortenZitierenTOP
1 Nutzer liest/lesen dieses Thema (1 Gäste)
0 Mitglieder: