Stack vs Heap Memory in C++

แชร์
ฝัง
  • เผยแพร่เมื่อ 9 ธ.ค. 2017
  • Patreon ► / thecherno
    Twitter ► / thecherno
    Instagram ► / thecherno
    Discord ► thecherno.com/discord
    Series Playlist ► thecherno.com/cpp
    malloc links:
    gee.cs.oswego.edu/dl/html/mall...
    people.freebsd.org/~jasone/je...
    Thank you to the following Patreon supporters:
    - Dominic Pace
    - Kevin Gregory Agwaze
    - Sébastien Bervoets
    - Tobias Humig
    - Peter Siegmund
    - Kerem Demirer
    Gear I use:
    -----------------
    BEST laptop for programming! ► geni.us/pakTES
    My FAVOURITE keyboard for programming! ► geni.us/zNhB
    FAVOURITE monitors for programming! ► geni.us/Ig6KBq
    MAIN Camera ► geni.us/t6xyDRO
    MAIN Lens ► geni.us/xGoDWT
    Second Camera ► geni.us/CYUQ
    Microphone ► geni.us/wqO6g7K

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

  • @TheCherno
    @TheCherno  6 ปีที่แล้ว +734

    Hope you guys enjoyed the video! A few notes:
    - to be clear, each program/process on our computer has its own stack/heap
    - each thread will create its own stack when it gets created, whereas the heap is shared amongst all threads

    • @HazStepFTW
      @HazStepFTW 6 ปีที่แล้ว +4

      So if your program is using multiple threads and there is memory which is created by one thread and needs to be read by another, for example, this memory would need to be allocated on the heap?

    • @josephwalker208
      @josephwalker208 6 ปีที่แล้ว +4

      Are you going to cover multiple threads because I had I look and it seems simple but could get complicated

    • @Puffadderr
      @Puffadderr 6 ปีที่แล้ว +8

      Yes. But that is really not good practice. When one thread is using something in heap allocated memory it has to lock the access to that memory until it doesn't need it anymore. So you really need to avoid using shared resources when using multiple threads. Threads are meant to do their own thing independent from other threads. You can use it to keep to keep track of like progress of all threads but continous access to resource is performance hit.

    • @dXXPacmanXXb
      @dXXPacmanXXb 6 ปีที่แล้ว +1

      Objects like Enemies in a game should always be created on the heap right?
      Are the variables of this object then also on the heap or will they be on the stack?

    • @olestrohm
      @olestrohm 6 ปีที่แล้ว

      the variables inside the object are created inside the object's "memory space". So if you have an Enemy with an x and a y, it will allocate 8 bytes (2 ints = 2 * 4 bytes) and store the x and y in that space.

  • @rawali1
    @rawali1 4 ปีที่แล้ว +412

    How is it that none of my teachers explained any of this during my whole bachelors degree.... this is brilliant! Thank you so much!

    • @deadcells963
      @deadcells963 3 ปีที่แล้ว +10

      Bad college ? 😅

    • @malharjajoo7393
      @malharjajoo7393 3 ปีที่แล้ว +16

      not really, when you learn something for the first time, you might have been overwhelmed.

    • @quicksilver5413
      @quicksilver5413 3 ปีที่แล้ว +3

      I honestly fucking hate it when people make 'you taught better in 15 mins than my university was able to in 4 years' comments on these videos. Like bitch please it doesn't take 4 years to learn these you just haven't been paying attention

    • @rawali1
      @rawali1 3 ปีที่แล้ว +20

      @@quicksilver5413 I didn't learn more in 15 minutes than in 4 years but this particular concept was not explained... my c++ teacher was absolute garbage. My java teacher was great, and a lot of that knowledge transfers over but... meh. java...

    • @masihaahmadi7663
      @masihaahmadi7663 2 ปีที่แล้ว

      tanks

  • @dub16rider
    @dub16rider 6 ปีที่แล้ว +873

    You are insanely efficient in explaining complex material, wow..., kudos.

    • @felixchien1664
      @felixchien1664 3 ปีที่แล้ว +9

      Moreover he has very nice sweat pants! Kudos for that as well

    • @davechan1281
      @davechan1281 3 ปีที่แล้ว +3

      100%

    • @eman5300
      @eman5300 3 ปีที่แล้ว +9

      Facts and he actually helps see the bigger picture instead of dwelling on definitions

    • @jaminoes_
      @jaminoes_ 2 ปีที่แล้ว

      I am pretty sure he speeds up his videos as well :-)

  • @Earth-Worm-Tim
    @Earth-Worm-Tim ปีที่แล้ว +57

    I’m a Software Engineer, and my first SWE position was as a C++ developer which I learned predominantly from Cherno. I have an EE education, but I learned more from Cherno watching TH-cam than I did in my Intro to C++ and Data Structures and Algorithms in C++ sequence in college. The Cherno is legit folks, but if you really wanna learn, you gotta start at the beginning of the playlist and go straight through watching EVERY VIDEO and coding along. C++ can be a frustrating language to learn, but if you learn C++ first, it’s cake learning ALL OTHER C-like languages. You’re the man Cherno!

    • @mauricecooper9880
      @mauricecooper9880 ปีที่แล้ว +3

      That’s awesome! I’m a computer science major looking for my first C++ gig. Can you tell me more about how you got it? Thank you!

    • @555gong9
      @555gong9 2 หลายเดือนก่อน

      @@mauricecooper9880 Hello, I'm also looking for a job. Have you found one?

  • @CaffeineForCode
    @CaffeineForCode 4 ปีที่แล้ว +35

    I like how you show why something is “expensive” or not very optimal instead of just saying it. You actually open the memory view or disassembly which is super useful! Thanks for the videos, they’re amazing!

  • @logantcooper6
    @logantcooper6 5 ปีที่แล้ว +222

    "Stored in the caysh"

    • @section9999
      @section9999 3 ปีที่แล้ว +5

      caysh money dawg

    • @tesla.8410
      @tesla.8410 3 ปีที่แล้ว +3

      I understood cage first, then caysh, then i understood that he actually means cache

  • @miteshsharma3106
    @miteshsharma3106 6 ปีที่แล้ว +358

    Happy birthday cherno!!!

    • @mokshithpb7991
      @mokshithpb7991 3 ปีที่แล้ว +1

      This comment have 281 likes But 0 replies (except me)

    • @paulu2862
      @paulu2862 3 ปีที่แล้ว +1

      @@mokshithpb7991 2 now

    • @projectvibe1226
      @projectvibe1226 3 ปีที่แล้ว +1

      @@paulu2862 3 now

    • @chauffeur1560
      @chauffeur1560 3 ปีที่แล้ว

      @@projectvibe1226 4 now

    • @Agent_Ax
      @Agent_Ax 3 ปีที่แล้ว

      @@chauffeur1560 5 now

  • @TokisanGames
    @TokisanGames 6 ปีที่แล้ว +16

    I think this is my favorite video so far. I always wondered about the stack and heap differences. This is such a good explanation!

  • @ZzBiazZ
    @ZzBiazZ 6 ปีที่แล้ว +19

    Finally, you are back, your video always great, thank you !!

  • @donha475
    @donha475 5 ปีที่แล้ว +6

    This stuff is all great man. All of your C++ videos have been amazing so far.

  • @dongyoungkim962
    @dongyoungkim962 ปีที่แล้ว +1

    hey cherno, your explanation of stack vs heap is amazing, no other youtube has evern been able to explain like this. ive come across heap and stack so many times but never got to really understand untill i watched your video today. thanky you so much!

  • @MuhsinFatih
    @MuhsinFatih 6 ปีที่แล้ว +29

    This is by far the most complete lecture/tutorial whatever, I have seen in a very long time (possibly ever). You explained everything very clearly, demonstrated and tested them, yet did that all in 20 minutes. I am honestly surprised that this video doesn't have hundreds of thousands of views because you deserve that. Wish you the best!

  • @jammerbammer1
    @jammerbammer1 3 ปีที่แล้ว +2

    This is A+ content. For someone trying to learn to code there is a lot here and I will be re-watching this a couple of times and playing with the memory view in Visual Studio. Thanks.

  • @ifeekesifeekes8166
    @ifeekesifeekes8166 5 ปีที่แล้ว +2

    This video helped me a ton with interview questions, thank's so much!

  • @mubin2026
    @mubin2026 3 ปีที่แล้ว +5

    The stuff that I learned in this one single video is actually insane. like, I knew about most of the stuff that he said, but since all of it was taught to me over various courses, and bits and pieces at a time, I never really could figure out how it all fit in together...This such a wonderful explanation!!
    All of it is starting to kind of make sense now....damn lol

  • @readingchess
    @readingchess 2 ปีที่แล้ว +1

    This is the first video I've watched and I wanted to say - Really well done! Such a top notch explanation. I'm subscribing for sure. Thanks again for taking the time to make these videos

  • @mountgraph1403
    @mountgraph1403 6 ปีที่แล้ว +3

    I learn so much over this channel thank you for the hard work!

  • @davidpatry4195
    @davidpatry4195 6 ปีที่แล้ว +2

    Thank you so much for your serie Cherno, I always learn alot watching you
    Happy holidays to you and your friends/family :)

  • @7guitarlover
    @7guitarlover ปีที่แล้ว +17

    Its been 5 years since you uploaded and still it is one of the BEST video on the internet. Yours is a C++ Goldmine. could you please talk about your learning pedagogy of new things and especially C++. How did you gain so much clarity ?

  • @igorthelight
    @igorthelight 2 ปีที่แล้ว +14

    For all C# developers: "new" does not mean, that it will be allocated on the Heap (for C# program)
    MyClass c = new MyClass(); // Allocated on the Heap
    MyStruct s = new MyStruct(); // Allocated on the Stack (in most cases)
    That doesn't mean that structs are ALWAYS allocated on the Stack! Just most of the times. It depends.
    Read about "stackalloc" keyword and about "Span" and "ReadOnlySpan". They are great!

  • @maxbardelang6097
    @maxbardelang6097 11 หลายเดือนก่อน +1

    Very clear and easily accessible explanation, even the explaining with asssembler was just really supporting understanding.

  • @nickbejan4914
    @nickbejan4914 6 ปีที่แล้ว +2

    Amazing explanation! Thank you!!

  • @kjes8639
    @kjes8639 6 ปีที่แล้ว +6

    This was a very interesting video. Please, make more videos about the way C++ works.
    I am looking forward to seeing your video about CPU cache optimisation.
    Thank you, Cherno, love your vids.

  • @feiyijiang9167
    @feiyijiang9167 2 ปีที่แล้ว

    wow, this video is wonderful! It answers a lot of my questions. Thank you Cherno!

  • @bandolero818
    @bandolero818 ปีที่แล้ว

    You are awesome Cherno! Thanks for your clear explanations!

  • @leixun
    @leixun 4 ปีที่แล้ว +128

    *My takeaways:*
    1. Both stack and heap memory are in RAM 0:47
    2. How to allocate stack and heap memory 2:55
    3. Stack memory allocation *stacks* data in the memory *in a row* and it is very fast 4:45
    4. Heap memory allocation doesn't 7:49
    5. Heap memory allocation needs to be freed manually by using "delete", whereas stack memory allocation is freed once the code is out of the current scope 8:47
    6. How heap memory, "new" and "delete" work 10:27, allocating memory on the heap is slow

  • @proton46
    @proton46 ปีที่แล้ว

    Great video! Heap memory is a really complex topic.... It took me a long time to figure out how it works when I was writing my own memory manager! Thanks a lot for this!😃

  • @knofi7052
    @knofi7052 6 ปีที่แล้ว +1

    Happy Birthday & Thank you very much for your great content! :)

  • @sayeddileri3461
    @sayeddileri3461 ปีที่แล้ว

    Thank you for this video. I have been confused about stacks and heaps. You helped me so much. Time to practice 🙌🏽🙌🏽

  • @youssefel-mahdy922
    @youssefel-mahdy922 2 ปีที่แล้ว

    I loved the way you explained them through the code, thank you truly!

  • @pablorodrigues9811
    @pablorodrigues9811 2 ปีที่แล้ว

    Thank you for this really great content, Cherno!

  • @edgaramiri
    @edgaramiri 4 ปีที่แล้ว +1

    You're the best man excellent explanation, thank you

  • @krisitak
    @krisitak 5 ปีที่แล้ว +1

    Next level videos. Thank you!

  • @xeturr
    @xeturr 3 ปีที่แล้ว

    Excellent refresher for me. Subscribed.

  • @marioseis7692
    @marioseis7692 3 ปีที่แล้ว +3

    MAGISTER DIXIT...!
    I am no programmer but I have had basic lessons in C almost 30 years ago and now I am strugling to master at least the basics of C#, which I find sometimes a bit confusing and with a lot of rules. Sometimes I get some comfort watching basic C ++ videos, especially those that are very well explained and that go right to the point like yours.

  • @philippebaque5157
    @philippebaque5157 6 ปีที่แล้ว +2

    Many thanks for your effort and your very clear explanantions.

  • @MrDarkyosh
    @MrDarkyosh 6 ปีที่แล้ว

    your videos have been very helpful to me. I hope things are going good for you Cherno :-)

  • @KoderKapil
    @KoderKapil ปีที่แล้ว

    Best content i found....Crazy, how it is simple and detailed 🔥.. Thank you

  • @Qdouble
    @Qdouble 5 ปีที่แล้ว +1

    Amazing video! Thanks. I just subbed.

  • @rika9317
    @rika9317 4 ปีที่แล้ว

    This video is really easy to understand!! I didn't know that allocating memory in heap is such a heavy work, and didn't know why it's heavy. You showed me the way to ensure the reason, looking into the assembly code. I'm gonna consider using Visual Studio...

  • @dafdaf4052
    @dafdaf4052 4 ปีที่แล้ว

    Very nice and informative, I am kinda addicted to your videos gj.

  • @HazemSaleh
    @HazemSaleh 6 ปีที่แล้ว

    You are a king. Excellent explanation, thank you.

  • @karimpeymani6569
    @karimpeymani6569 4 ปีที่แล้ว

    This is the best explanation video about Stack vs Heap I ever seen, Thanks man.

  • @jarektrojanowicz
    @jarektrojanowicz ปีที่แล้ว +2

    Thanks! One thing worth mentioning:
    We use heap for allocation during runtime and stack for allocation during compile time. It was mentioned somewhat in the video but I think it should be more emphasized.

  • @codastudiode
    @codastudiode 4 ปีที่แล้ว

    dude, you're awesome! I've learned it like a piece of cake!

  • @anasahtsham4033
    @anasahtsham4033 3 ปีที่แล้ว

    THANK YOU SOOO MUCH MAN. VERY HELPFUL VIDEO, LOVED IT

  • @fouryeartransform3042
    @fouryeartransform3042 3 ปีที่แล้ว +1

    I just nailed an interview question because of this and other videos. Thanks so much.

  • @shruthiabirami7406
    @shruthiabirami7406 5 ปีที่แล้ว +1

    Awesome video😀 understood clearly... Kudos❤

  • @duckcluck123
    @duckcluck123 4 ปีที่แล้ว

    Wow, this was incredibly incredibly insightful

  • @deepikagoyal07
    @deepikagoyal07 ปีที่แล้ว

    Its was super useful video. Thanks and Gratitude!!

  • @Jonathan-ex3sl
    @Jonathan-ex3sl 8 หลายเดือนก่อน

    Thank you so much for this content. It's been very useful for me.

  • @albertkiefel
    @albertkiefel 5 ปีที่แล้ว +1

    Very well explained, very good examples!

  • @Jonny-op3wr
    @Jonny-op3wr ปีที่แล้ว

    Just subscribed. Enjoyed the content. 😇

  • @relytheone853
    @relytheone853 4 ปีที่แล้ว +1

    I enjoyed the video. Thank you!

  • @franejelavic
    @franejelavic 6 ปีที่แล้ว +6

    Hi Cherno,
    Could you maybe take a video about exceptions, and why you don't like them, how to avoid them and best practices.
    Also a good topic to talk about is unit testing and do you write tests in parallel with your development.
    Thanks for everything your doing here.

  • @sallaklamhayyen9876
    @sallaklamhayyen9876 2 ปีที่แล้ว

    Brilliant explanation thank you so much and please continue

  • @LarryPeteet
    @LarryPeteet 5 ปีที่แล้ว +1

    Very Helpful, Thanks!

  • @zniverse
    @zniverse 6 ปีที่แล้ว

    Your video is always great. Thank you.

  • @dameck9570
    @dameck9570 4 ปีที่แล้ว +27

    Oh boy! I found a C++ video from you and now I'm stuck with video recommendations of your series. I appreciate that, but it's 22:30 and I wanna sleep... Seems like I wont

  • @marcelbarbosa281
    @marcelbarbosa281 3 ปีที่แล้ว

    Sick bro

  • @daluwang2112
    @daluwang2112 2 ปีที่แล้ว

    Thanks for explaining this sooooo clearly and in an easy way!!!!! very useful!

  • @lijacky160
    @lijacky160 2 ปีที่แล้ว

    I love you! YOU ARE SUPER HELPFUL !!!!!!!! KEEP THIS PASSION ON MAKING VIDEO. YOU ARE TALENTED

  • @jioferno
    @jioferno 8 หลายเดือนก่อน

    Clear, ,fluent and to the point explanation, thanks.

  • @omarhatem_97
    @omarhatem_97 4 ปีที่แล้ว

    i have been programming c++ for almost 7 years now , what makes you unique among other youtube channels or tutorials is that you are really so deep in learning and teaching the concepts . keep going man you are awesom !

    • @shambhav9534
      @shambhav9534 3 ปีที่แล้ว +1

      7 years of typing and you don't know where the shift button is?

  • @lucianodibernardo1546
    @lucianodibernardo1546 5 ปีที่แล้ว +1

    Awesome video !!!

  • @Decco6306
    @Decco6306 3 ปีที่แล้ว +6

    A trendy looking programmer that makes good quality programming tutorials on TH-cam that doesn't use a mac?
    Respect.

  • @AlaaAreesPhoenix
    @AlaaAreesPhoenix ปีที่แล้ว

    Thanks a lot man your videos are so helpful , keep going 💙💙

  • @dan110024
    @dan110024 2 หลายเดือนก่อน +1

    Random fun fact - 99% of Rollercoaster Tycoon was written in assembly by a single developer. Getting an understanding of even a fraction of what goes on here, it's insane to think about how good Sawyer, the dev, was.

  • @dxlge
    @dxlge ปีที่แล้ว

    amazing, explained really well and in a clean way

  • @ErichDAtriGuiran1
    @ErichDAtriGuiran1 3 ปีที่แล้ว

    thanks dude, good explanation

  • @BlackJar72
    @BlackJar72 6 ปีที่แล้ว

    Great video and happy birthday.

  • @haznoskill
    @haznoskill ปีที่แล้ว

    A lot of useful knowledge, thanks.

  • @stryker2k2
    @stryker2k2 4 ปีที่แล้ว

    Wow! Thanks for this video!

  • @svenbtb
    @svenbtb ปีที่แล้ว +1

    This was a really helpful video, thank you SO much. I appreciate that you show WHY the dynamic memory operations are more expensive and how it can be a performance boost to use the stack.
    So essentially, if you want something to have a longer lifetime, or if it's of a large size, then it's worth using the Heap, but if you're making a small simple variable that won't exist for a long time, it makes more sense to just use the stack, yeah?

  • @Narblo
    @Narblo 6 ปีที่แล้ว +1

    This is sooo awesome!!!!

  • @GURUYATHI
    @GURUYATHI 4 ปีที่แล้ว

    You are just awesome brother..!

  • @xinking2644
    @xinking2644 2 ปีที่แล้ว

    very clear explain,thank you

  • @lukaspetrikas6320
    @lukaspetrikas6320 3 ปีที่แล้ว

    Your a very clever guy. I find your videos extremely helpful

  • @brendonmauro
    @brendonmauro 6 ปีที่แล้ว

    Very didactic!! Greetings from Brazil!

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

    Great video!

  • @Hubedsir121
    @Hubedsir121 2 ปีที่แล้ว

    Thank you man! :)

  • @neiltsakatsa
    @neiltsakatsa 6 ปีที่แล้ว +8

    Thanks Cherno ! I was wondering if sometime you could dive into Windows Forms Applications using Visual C++ :-). I'm really enjoying your tutorials man !

    • @platin2148
      @platin2148 6 ปีที่แล้ว

      Neil Tsakatsa Don’t think that we will ever use this api same with WinForms you probably should look at C++/Winrt wich is more native than the CLR version wich has an ugly syntax and is very slow compared to Nativ C++.

  • @Djzaamir
    @Djzaamir 6 ปีที่แล้ว

    Finally dude , its been some time since your last video on C++

  • @dream_emulator
    @dream_emulator 3 ปีที่แล้ว

    Wow. This guy is next level and then some. 🔥

  • @rittenbrake1613
    @rittenbrake1613 4 ปีที่แล้ว +2

    I just enjoy u talking, very easy to absorb

  • @marindraganov8765
    @marindraganov8765 3 ปีที่แล้ว

    Pal, thanks a lot! It is like putting me in a new dimension with my coding!
    Now I have a vague idea why my projects work the way they do! Coming from Python/C# background this video is an eye opener!
    EDIT: Typo.

  • @ChamAntonio
    @ChamAntonio 2 ปีที่แล้ว

    still such an amazing and practical video now it's 2021.

  • @SonGoku-rl9qf
    @SonGoku-rl9qf ปีที่แล้ว

    Great teacher!

  • @bashaar4788
    @bashaar4788 4 ปีที่แล้ว

    words cant describe this video thanks for helping

  • @Drtsaga
    @Drtsaga 6 ปีที่แล้ว +10

    Cherno, your tutorials are always great. I love that you pay attention to what you say. You always choose your words so that YOUR AUDIENCE understands what you say, and not so that you make sense to yourself. Thank you for the good work and congratulations. I am sure when you become worldwide famous these videos will get a lot more views.
    I have a question for you: How did you get to point that you know the material well enough to teach it? Who/What is **your** teacher? Other than sporadically making google searches and stumbling on documentation pages, do you regularly read books on C++? Do you constantly take classes? Do you continuously engage in competitions that keep your edge sharpe? How are you so good?
    I am not asking how are you productive. I just wander how do you keep this volume of knowledge in your head in such an order that becomes transferable to others. If I don't refresh something for a month (give or take) I surely forget it ... xD

    • @nobytes2
      @nobytes2 2 ปีที่แล้ว

      This is like asking a musician how she/he gets good lol. There's no freaking magic formula, is just practice and experience.

    • @erikb4407
      @erikb4407 2 ปีที่แล้ว +3

      @@nobytes2 I believe he's not asking for a magic formula. He wants to know the materials / instructors / methods The Cherno uses to learn and retain the vast amount of comp sci knowledge he teaches us. Practice and experience is correct, but *how* does he practice? Is it through competitions, work, reading books, classes, etc. Hope this helps

    • @RemerexHD
      @RemerexHD 2 ปีที่แล้ว

      @@nobytes2 he just asking for tools

  • @Vagelis_Prokopiou
    @Vagelis_Prokopiou 6 ปีที่แล้ว +1

    Very nice. Thanks.

  • @aadikarva
    @aadikarva 2 ปีที่แล้ว

    Thanks @cherno for making these videos. Few follow-up Qs:
    1. How many CPU cycles does Heap allocation take for each of the examples you talked about in the video above?
    2. Can you start a series on OS basics like different types of memory, how it all works at the OS level etc. Thanks! :)

  • @HahalolxDay
    @HahalolxDay 3 ปีที่แล้ว

    Thank you so much!!!

  • @sathyakumarn7619
    @sathyakumarn7619 5 ปีที่แล้ว

    Cherno, thanks for the video! Maybe can you use a visual representation the next time for such complex time-taking concepts?

  • @colloidalsilver177
    @colloidalsilver177 5 ปีที่แล้ว +1

    thank you man

  • @damianrivas
    @damianrivas 4 ปีที่แล้ว +1

    Awesome video! I thought it was going to be a lot more complicated than this. I'm glad it's not :)

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

    this is totally amazing

  • @root0062
    @root0062 9 หลายเดือนก่อน

    I love how I get a good in depth explanation of stack & heap. Dare I say better explained than my proff.
    And at the end of the video I go. Wow! I have the same couch!

  • @RagdollRocket
    @RagdollRocket 3 ปีที่แล้ว

    Thank you!

  • @10monthspregnant
    @10monthspregnant 6 ปีที่แล้ว +1

    Yes!! Been waiting for this video for so long.