Kezdőoldal » Számítástechnika » Programozás » Mikor léphet fel C++-ban...

Mikor léphet fel C++-ban kupackorrupció?

Figyelt kérdés
Nemrégiben egy ELTE-s barátom magyarázott egy fájlkezelős példát, és elhangzott a kupackorrupció kifejezés, de ő is csak hallotta valakitől az esetleges felbukkanását, ezért kíváncsi lennék, ti tudtok-e segíteni.
2021. jún. 6. 01:23
 1/3 anonim ***** válasza:
77%

Ilyen formában ezt a fogalmat még nem hallottam, de gondolom, valamilyen fajta memóriaszivárgás lehet, amikor a már nem használt memóriaterületeket a programozó elfelejti felszabadítani.

De kicsit rákeresve ezt találtam:

"There are many causes of heap corruption. Some of the common causes are: Buffer overrun (Writing beyond the allocated memory), Double free (Freeing a pointer twice) and Old pointer reuse(Reusing a pointer after being freed)."

Szóval pont az ellenkezője, mint amit sejtettem, amikor olyan memóriaterületre szeretnél írni, ami (már) nem a tiéd.

2021. jún. 6. 01:33
Hasznos számodra ez a válasz?
 2/3 anonim ***** válasza:
58%

hát igen, az első jól leírja

ugye a c++ egy rative eléggé alacsony szintű programnyelv, ami nagyon sok szabad kezet ad a programozónak. egyik ilyen példa a memóriakezelés. jelen esetben az a probléma, hogy nagyon könnyen utalhatunk olyan memóriaterületre, ami "nem a miénk", magyarul nem a programozó rendelkezik felette explicit módon.

például tegyük fel, hogy van egy a pointerünk ami egy 5 elemes tömb legelső elemére mutat. mivel a tömb egy egységes memóriaterület, a pointeren keresztül a tömb bármelyik elemére utalhatunk. de ugyanígy utalhatunk a tömb elemein túli memória területre. pl semmi nem akadályoz meg, hogy azt írd, hogy *(a + 5) = 6, ami a fenti tömb nem létező, 6. elemének ad értéket.

2021. jún. 6. 02:45
Hasznos számodra ez a válasz?
 3/3 anonim ***** válasza:
77%

#2 vagyok

annyit adnék hozzá, ilyen overall magyarázatként, hogy a heap c++ban a dinamikus memóriaterület, ahol a programozó "kézzel" használ fel tárhelyet. ilyen például amikor azt irod, hogy "int *i = new int", ekkor egy int pointernek te explicit foglalsz le memóriát. és ahogy fent említettem, a c++ itt jelentős szabad kezet ad, és emiatt szabad utat nyit a különböző memóriaproblémáknak, ha nem vigyázol

2021. jún. 6. 02:52
Hasznos számodra ez a válasz?

További kérdések:




Minden jog fenntartva © 2025, 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!