Előadás a halom és stack - verem túlcsordulás az orosz

@voipp: Nem hiszem, hogy az információ, amit olvas, az igaz. Ahogy helyesen mondta @DreamChild, és verem, és a hip - legfeljebb eszközöket. Az a tény, hogy a köteg kisebb, mint a kupac mérete általában nem jelent semmit: elérheti az adatokat a helyi és lokális HIPE verem. (Erre gondolt gyorsítótár a processzor szinten, de ez nem működik úgy, ahogy gondolja.) Nyilvántartja a magas szintű nyelvek nem, és soha nem is lesz, több okból (például azért, mert az optimalizálási fordító tudja optimalizálni egy jobb ember.) - VladD december 5 '13 at 11:48







  1. És stack és heap egyaránt fizikailag RAM (nem veszi figyelembe az építészeti diszlokációk segítségével spec. Processzorok / számítógép)
  2. Méretük és helye határozza meg a tengely
  3. Ebben kupac lehet töredezett (néha elég erősen). Általában tengelyek különleges eljárások töredezettségmentesítéséhez a kupac.
  4. Stack általában nem töredezettek (Gondolom tudod gondolni végrehajtási verem a töredezettség, de ez egy oximoron).
  5. Stack, mert gyorsan, mert ez az egyetlen lehetőség dolgozik együtt - ez a helyzet a stack pointer (általában eset) - így az összes veremműveletekhez sokkal gyorsabban fut, mint egy kupac. Működés a köteg lehívása / rekord 1 mozdulattal POP / PUSH processzor
  6. Egy csomó nehéz, mert az egyszerű kezelhetőség és a fragmentáció letölteni az értékét is eredményezheti tíz (vagy akár több száz) mozgás processzor.
  7. Hátrányok verem kicsinysége a mérete (ez mindig összehasonlítjuk egy csomó idő kevesebb) - úgy, hogy a hozzáférést csak következetes.

Válaszol december 6. '13 at 18:47

@Barmaley: 6) Logikus, hogy a memóriát a kupac, de ha van egy mutató egy objektum a kupac, és a mutatót egy objektum a verem, a hozzáférés sebessége szigorúan azonos. 7) Ismét elérhető végezzük nincs összhangban az olvasás és dereference a mutatót. - VladD december 6. '13 20:15

Sőt, az adatelérési sebesség a verem, és a halom ugyanaz. Ie Tárgyak 5) és 6) egy tévedés. Azt nem volt lusta, és ellenőrizte a töltési idő (több kísérlet), egy sor 2 millió. Int (inkább a verem nem illik) a halomból és verem. légpárnás kitöltési (int a [], int n) Ezt a módszert választotta, hogy a hatását minimalizáljuk gyorsítótárat és előzetes lehívására is. Eredmények (clock_gettime (CLOCK_THREAD_CPUTIME_ID, ts);) ./a.out 100 verem: átl: 43,332 (msec) kupac: átl: 42,283 (msec) - AVP december 6 '13 22:14







@avp nem szabad próbálja, akkor biztosítani kell, hogy egy csomó töredezett - e célból szükséges, hogy a felhő egy véletlenszerűen elosztása a különböző méretű és véletlenszerűen távolítsa el őket, csak akkor ellenőrizze a sebességet hozzáférést biztosít a nagy tömb a kupac (!). Ellenkező esetben, ha a kupac nem törnek sebesség természetesen ugyanaz lesz. - Barmaley december 8 '13 at 18:47

Bár sok idő telt el azóta, hogy a kérdést, szeretnék válaszolni, mert ez a kérdés még mindig a „Google”, és azt hiszem, hogy sokkal több lesz erre az oldalra.

Mint azt már válaszol „fizikailag” - ez a tranzisztorok és kondenzátorok. Ahhoz, hogy a kérdést valószínűleg emeltük nem teljesen helyes. Lehet, hogy jelent valamit, mint a - „Hol van egy csomó verem, és hogyan működnek.”

Szintén. Valószínűleg. érdekli általában rendezett memória, teljesen megvilágítja ezt a kérdést nem fogom, de azt akarom, hogy mutassa meg egy teljes véleményem, az anyag és a linkeket biztosíthat számukra. Anyagok oroszul. Meg kell érteni, hogy mi a virtuális memória és hogyan fordították a fizikai.

Itt egy példa a szervezet a memória szegmens.

Előadás a halom és stack - verem túlcsordulás az orosz

Ez rövid és egy kicsit a virtuális memória fizikai reprezentáció.

Ami a memória eszköz is a folyamat:

Előadás a halom és stack - verem túlcsordulás az orosz

KÓD tárolja a készülék, valamint egy csomó más dolgot lehet tanulni tőlem ajánlása anyagot a választ.

Sokkal jobb, hogy ezt mondja. Tipikus műveletek a memória elosztását / release és írási / olvasási. memória kiosztása és felszabadítás műveletekhez lassabban egy kupacban.

Ha például kezdjük mutató az adatokat fekvő halom, a különbség a hozzáférés sebessége egyáltalán nem.

Válaszol december 7 '13 at 06:11

„Az adatokhoz való hozzáféréshez (írás / olvasás) szinte azonos sebességgel,” És ha az adatok hiányosak, nem lassítja az olvasó? - voipp december 7 '13 at 11:14

@voipp: Mit jelent a „adatok hiányosak?” Ha beszélünk a töredezettség a tömb, akkor ez nem történik meg, a tömb mindig egyenesen megy. Ha beszélünk a kezelés a különböző tárgyak, ezek elválaszthatók a memóriában, és a helyét a verem, és a kupac. - VladD december 7 '13 at 11:57

Igen, támogatom @VladD. A szerkezet is, nem töredezettek. Ha van egy halom szerkezet egy std :: string tartalmát a sor, általában - egy kupacban :). Inkább meg kell gondolni a adatszerkezetek, amelyet akkor kell használni, nem a helyét. A listát, például néha jobb, mint a tömbben, de hajlamos a fragmentáció (és több memóriát költségek). - Michael M december 8 '13 at 09:01




Kapcsolódó cikkek