Jak funguje dynamická alokace paměti?

แชร์
ฝัง
  • เผยแพร่เมื่อ 30 ต.ค. 2024

ความคิดเห็น • 18

  • @int32_
    @int32_ 7 หลายเดือนก่อน

    8:52 neměl by heap ležet spíš pod stackem nad data segmentem, uprostřed volné paměti?
    9:05 heap je pomalejší jenom při alokaci, přístup je skoro stejně rychlý

    • @GrizlikD
      @GrizlikD  7 หลายเดือนก่อน

      To jsem taky řešil a dokonce jsme to probírali i na Discordu...
      Někde to tak být může, někde to tak být nemusí, to už záleží na konkrétní implementaci tím OS, ale z pohledu návodu mi přijde naopak podstatně smysluplnější říct, že heap je úplně mimo segmenty
      Protože z toho si pak dost lidí může vyvodit nepravdivé tvrzení, jako že například heapů je vždy tolik, jako stacků, nebo že heap má stejně omezenou velikost jako stack...
      Tohle je vlastně něco, co jsem doteď pořádně nepochopil ani já: Jestliže je heap pod stackem, tak jak je možné, že tam lze naalokovat libovolnou velikost, nebo že tam nedochází k plýtvání pamětí (když dva kusy naalokuju, pak první kus uvolním a pak chci ještě větší kus paměti, tak ta se musí naalokovat úplně nahoře, jelikož by jí nezbylo místo)
      Tak jsem to radši do toho videa vůbec nedával :D Ale jinak good point

  • @moretttti
    @moretttti 7 หลายเดือนก่อน +1

    díky grizlíku za tvou práci. RESPEKT!

  • @david-gameplay
    @david-gameplay 7 หลายเดือนก่อน

    Dobré video, neskutečně lepší video oproti tomu kdy jsem tě začal sledoval (když jsi měl 18 odběratelů).

    • @GrizlikD
      @GrizlikD  7 หลายเดือนก่อน

      Díky :D

  • @matej9437
    @matej9437 7 หลายเดือนก่อน

    6.26 tisíc odběratelů.
    Sleduji tě asi od 300 odběratelů :-D

  • @sgmvideos5175
    @sgmvideos5175 7 หลายเดือนก่อน

    3[pole]
    A realloc není pomalý, pokud jsou podmínky příznivé, ale když dojde místo, tak musí všechno z původní umístění zkopírovat... ale to se stejně dělá skoro vždy...

  • @Thund3rMan3
    @Thund3rMan3 7 หลายเดือนก่อน

    Realloc jsem pouzival vzdy pro vlozeni prvku do plneho pole, nevidim nic spatneho. Uz vim co jsi myslel bezpecnosti pameti, proste osetrovani vstupu, to je dulezite. Dalsim napadem na video jsou C++ pointery a smart pointery. C je voser.

    • @GrizlikD
      @GrizlikD  7 หลายเดือนก่อน

      Když se na to dívám zpětně, tak fakt to z toho videa zní, jako že funkce realloc() je špatná :D
      Není špatná, protože ono to ani nijak udělat nejde, ale zase by se neměla tato funkce používat třeba pro přidání jediného prvku do obrovského pole... Většinou se to v praxi řeší tak, že jakmile se pole naplní, tak se jeho velikost zdvojnásobí, ať vznikne nějaká rezerva pro další plnění daty, pořád je ale ještě optimálnější už rovnou naalokovat tolik paměti, kolik vím, že budu potřebovat (což ovšem v některých situacích nejde)

  • @pickarter99
    @pickarter99 7 หลายเดือนก่อน +1

    Los Grizlikos :Dos

  • @moretttti
    @moretttti 7 หลายเดือนก่อน

    a co udělat i povídání o tom jak to udělat nebezpečně? :)

  • @SlimeRBX1
    @SlimeRBX1 7 หลายเดือนก่อน +2

    Vyjde Batch?

    • @GrizlikD
      @GrizlikD  7 หลายเดือนก่อน +1

      Jo, zase bych mohl natočit další video... Ale bude to spíše shrnutí všech příkazů z předchozích videí, abychom se v dalších videích už mohli posunout na random funkce, které s Batchem až tolik nesouvisí 😅

  • @Koniec128
    @Koniec128 7 หลายเดือนก่อน

    Co když nepoužiji funkci free()?

    • @int32_
      @int32_ 7 หลายเดือนก่อน +1

      Nastane memory leak, program neuvolní paměť zpět operačnímu systému a nebude tak použitelná pro další programy. Pokud ten free nepoužiješ v nějakém cyklu tak to pak dopadne jako google chrome a sežere půlku ramky :D

  • @ivafeltlova3853
    @ivafeltlova3853 7 หลายเดือนก่อน +1

    První komentář :D

    • @SokyhoGulas
      @SokyhoGulas 7 หลายเดือนก่อน

      🧛🏻‍♂️👍🏿👄

    • @GrizlikD
      @GrizlikD  7 หลายเดือนก่อน

      th-cam.com/video/C_1V_tGrtlw/w-d-xo.html