Kezdőoldal » Számítástechnika » Programozás » Mi okoz segfaultot?

Mi okoz segfaultot?

Figyelt kérdés

Van egy kodreszlet, amivel baja van:


typedef struct bakancs {

char nev [20]; //bakancs neve//

char keszult [30]; //hol készült//

int legkisebb;

int legnagyobb; //ezek a lábméretek//

char szin[15]; //bakancs színe//

double elettartam; //meddig bírja a bakancs//

char gyarto[20]; //ki gyártja//

int ar; //mennyibe kerül//

int bevetel; //a legnagyobb bevétel//

int elegedettseg; //egy 1-5-ig skálán a vásárlók értékelése//

struct bakancs* next;

} bakancs;


typedef struct gyarto{

char nev[20];

struct gyarto* next;

bakancs* head;

} gyarto;



int fgv(gyarto* headfo, int npt){

gyarto* a=headfo;

bakancs* b;

int max=0;

while(a!=NULL){

for(b=a->head; b!=NULL; b=b->next)



A for ciklussal van a baja. A lényeg, hogy egy fésűs lista elemeit járom be. Van az egész listának is egy feje, ez a headfo. A fésűs lista gerincén van egy pointer(gyártó), és ennek a bakancsait járom be. Aztán ha a for ciklusnak vége, akkor persze a=a->next.


Mi a gondja a for-ral?



2021. dec. 2. 08:49
 1/4 anonim ***** válasza:
51%
Például az, hogy a zárójel közötti résznek semmi értelme a for()-nál.
2021. dec. 2. 09:29
Hasznos számodra ez a válasz?
 2/4 anonim ***** válasza:
42%

Jó az a for ciklus, nincs vele gond.

Segfault akkor van, ha olyan helyre írsz a memóriában, amihez nincs közöd, tehát amit nem foglaltál le. Vagy nem foglaltál le helyet a heap-ben, vagy túlindexelsz egy tömböt, stb.

Így ránézésre azt látom, hogy vannak mutatóid, de sehol egy malloc() vagy valami, amivel memóriát foglalnál le. Mélyebb kódelemzésbe én nem akarok belemenni, de szinte biztos vagyok benne, hogy valamelyik gyarto vagy bakancs mutato nem lefoglalt helyre mutat.

2021. dec. 2. 09:44
Hasznos számodra ez a válasz?
 3/4 A kérdező kommentje:
2-es, csak azért ennyit küldtem be, mert bazi hosszú a teljes kód xddd. Átnézem azt a láncolást meg a mallocot is. Köszi!
2021. dec. 2. 10:09
 4/4 anonim ***** válasza:

"mert bazi hosszú a teljes kód"

az már kódszervezési probléma...


Ez házi lesz? Ha nem akarod megosztani a kódot publikusan, akkor küldj privátot.

2021. dec. 2. 11:37
Hasznos számodra ez a válasz?

További kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!