Kezdőoldal » Számítástechnika » Programozás » A program futása közben ki...

A program futása közben ki hiba lép fel mi lehet a baja?

Figyelt kérdés

Ezek mutatótömbök:

Dinamikusan létrehozott objektumok címeit tárolják.

delete [] *Zoo;

delete [] *ZooTwo;


De ha kitörlöm a forráskódból ezt a két sort akkor nincs futásidejű hiba.

Miért?


2012. jún. 16. 21:08
 1/6 A kérdező kommentje:
Miért lehet ez?
2012. jún. 16. 21:21
 2/6 anonim ***** válasza:

Mert a programban nem "hiba", ha nem szabadítod fel a memóriát.

Amikor leáll úgyis felszabadul.


De tessék felszabadítani mindig mindent, mert nem jó dolog a memory leak és nem jó móka ha elfogy a memória.

2012. jún. 16. 22:19
Hasznos számodra ez a válasz?
 3/6 anonim ***** válasza:

Ja, bocsi kihagytam miért hiba.

Mert lehet nincs ott amit törölnél.

Mondjuk, de a kód több része nélkül nem lehet megmondani ezt.

2012. jún. 16. 22:31
Hasznos számodra ez a válasz?
 4/6 iostream ***** válasza:

Mutatótömbök, tehát ilyesmi:

Mammal** Zoo = new Mammal*[10];

?

Mert akkor ezzel nem a tömböt törlöd, hanem az első elemére hívod meg a delete[] operátort, ami hibás. Hiszen egy elemre a delete-t kell hívni. Ha törölni akarod, akkor

delete[] Zoo;

2012. jún. 17. 08:56
Hasznos számodra ez a válasz?
 5/6 A kérdező kommentje:

de ha ezt írom a forráskódba

delete [] Zoo; //undefined behavior

delete [] ZooTwo; //undefined behavior

plusz futásidejű hiba.


iostream ahogy a te példádban volt úgy csak a tömbökben tárolt dinamikus objektumok címét törlöm és nem az objektumot így még memórialeszivárgás is keletkezne ha a program futása nem érne véget mint az én példámban.


Ez így helyes:

Így tudom törölni az összes memóriacímen levő objektumokat:

delete [] *Zoo; //Első módszer.

delete [] Zoo[0] //Második módszer és ez ugyanaz mint az első.Ha jobban elgondolkozik rajta valaki rájön.


utána ha akarom a mutatótömbökben levő címeket felülírom a NULL al mert már nem mutatnak semmire vagy épp valami másra.


for(int i = 0;i < 3;i++) { Zoo[i] = NULL;ZooTwo[i] = NULL; }

2012. jún. 17. 16:23
 6/6 A kérdező kommentje:

Hopsz nincs futásidejű hiba csak így:

delete Zoo[0];

2012. jún. 17. 16:24

Kapcsolódó 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!