malloc vs calloc Differences Explained | C Programming Tutorial

Поделиться
HTML-код
  • Опубликовано: 11 дек 2024

Комментарии • 50

  • @towtruckn
    @towtruckn 2 года назад +22

    Great video; the thing I find amazing is that even though using calloc() is at a drop in performance over the re assignment of one million integers; it still only took 1.6 thousandths of a second to do it which is still staggeringly quick and a testament as to how fast modern machines have actually become.

    • @PortfolioCourses
      @PortfolioCourses  2 года назад +9

      Thank you Peter! :-) And I totally agree, a lot of lower level performance differences like malloc vs calloc almost don't even matter unless the numbers involved are huge or the operation happens "constantly" (e.g. like in a video game continually refreshing frames 60x per second).

  • @sshrek1996
    @sshrek1996 Год назад +8

    Thank you for explaining with example codes which majority of the channels don't do

  • @goranosvald1792
    @goranosvald1792 2 года назад +17

    This was an amazing explanation, way better than my prof thank you!

  • @atamovassagi6563
    @atamovassagi6563 3 года назад +5

    hello sir as the first comment on this video first of all i wanted to thank u because of this tutorial .no matter how few your views are keep sharing videos like this 😊

  • @TheCoder557
    @TheCoder557 9 месяцев назад

    a two year old video saved me. WOW great vid 👍🏾

  • @aadhuu
    @aadhuu 2 года назад +2

    Wow! An amazing explanation indeed! Thanks a lot!

  • @federicobau8651
    @federicobau8651 Год назад

    1+ sub. Great explanation and good example to deliver the concept

    • @PortfolioCourses
      @PortfolioCourses  Год назад

      I’m glad you enjoyed the explanation and example Federico, and welcome aboard! :-)

  • @Fillmore634b
    @Fillmore634b 10 дней назад

    I have a silly question - why do we fiil the heap thousand times? It's when we generate a random size and then allocate malloc of that size.
    Is this to fill the entire heap and leave no zeros because the heap is very big?

  • @kcvinu
    @kcvinu 10 месяцев назад

    Great video. I think I should need calloc when creating buffer to pass to Windows api functions, right ?

  • @shadowrealm8937
    @shadowrealm8937 11 месяцев назад

    please explain (toc-tic)/CLOCKS_PER_SEC
    what is this divider is and why it needed?

    • @bsbharat0705
      @bsbharat0705 9 месяцев назад

      i.e. clock cycle of the processor per second .. so when you devide ticks with that value you will get exact time in second ...

  • @someonespecial1329
    @someonespecial1329 Год назад

    I'm trying to run the code at 4:26 in linux (fedora) and the terminal outputs to me:
    malloc(): corrupted top size
    Aborted (core dumped)
    (Edit) If I run it again, I get other messages before Aborted, that are:
    double free or corruption (!prev)
    free(): invalid next size (normal)

    • @PortfolioCourses
      @PortfolioCourses  Год назад

      It looks like you can get that first error if you overwrite the program memory or go past certain bounds, so maybe it's just allocating too much? www.reddit.com/r/cs50/comments/y7gppx/pset_5_malloc_corrupted_top_size_please_help/ Maybe try to make the numbers lower in terms of the number of times space is allocated and how much space is allocated?

    • @someonespecial1329
      @someonespecial1329 Год назад

      @@PortfolioCourses I tried debugging the code in vscode and the part that includes malloc seems fine, but the program aborts at the calloc statement (I toggled a breakpoint at that specific line).

    • @PortfolioCourses
      @PortfolioCourses  Год назад

      That's odd, I'm not sure why that would be other than for some reason the memory is not available or something is going wrong when it's being allocated.

  • @PremiereStoss-qm9un
    @PremiereStoss-qm9un 8 месяцев назад

    Great video! While I get the concept of what you are doing here. I am a little confused on the "when" to use it. I mean, couldn't data always be there when using malloc? If so, wouldn't that always be a problem?

  • @vsantet42
    @vsantet42 10 месяцев назад

    I have always been confused about calloc. I wonder if calloc implementation is a bit more than just doing a malloc of ‘number * size’ then a ´memset’. That was my implementation for my computer science project lol

  • @vicsteiner
    @vicsteiner 5 месяцев назад

    first thank for the videos I am learning a lot through them! I did tried the clock part for this example and not sure why but I am getting in many runs a faster time for the calloc allocation. Any idea what might be going on? I am using gcc in an ubuntu os.

  • @quantumastrologer5599
    @quantumastrologer5599 2 года назад

    Great voice, great explanation

  • @ironmonkey1990
    @ironmonkey1990 9 месяцев назад

    Thank you !

  • @pietraderdetective8953
    @pietraderdetective8953 Год назад +1

    hey i followed this tutorial, but in the tictoc example I always get 0.000000s both malloc and calloc. I had to increase the memory allocation for 1 trillion integer in order for it to show the time duration.
    but even so, the difference between malloc vs calloc in my laptop is 0.006s vs 0.005s.
    Has there been a major C release that made calloc as fast as malloc?

    • @jongecsek5085
      @jongecsek5085 8 месяцев назад

      Me too! My data at 1 trillion was malloc .003 and calloc at .004

    • @jongecsek5085
      @jongecsek5085 8 месяцев назад

      I'm on a desktop with a core i14 and DDR5

  • @theyayaa
    @theyayaa 10 месяцев назад

    Is the combination of malloc and memset better than calloc?

  • @ChrisNoesen
    @ChrisNoesen 9 месяцев назад

    Great video and explanation! I am binge watching all your videos!! One thing though, what is the downside to using mallac? I know you explain that data can be there but how does that interact with your code?

    • @PortfolioCourses
      @PortfolioCourses  9 месяцев назад

      If you were to use the memory that malloc() allocates with the assumption that it is set to zeros, that could be a problem that could cause a bug. Maybe you try to store counts of something, assuming the counts begin at 0, but then if the memory contained non-zero values like 4,5,etc, maybe your counts then incorrectly begin at those values. With malloc(), you would want to first set the memory you allocate to something before doing additional things with that memory. So the issue with malloc() leaving whatever is in memory there is only an issue if your code makes assumptions that it shouldn't or is written without this in mind. Thank you for binge watching the content. :-)

    • @ChrisNoesen
      @ChrisNoesen 9 месяцев назад

      @@PortfolioCourses Ok, that makes sense! Thanks! btw: I purchased your linked list course on Udemy. Great stuff! Your C examples and C tutorials are amazing. Keep em coming!!!

    • @PortfolioCourses
      @PortfolioCourses  9 месяцев назад

      Awesome thank you, I hope you like the course! :-D

  • @hesapörnek-u5q
    @hesapörnek-u5q Год назад

    hello you said you free the junk but then how come you fill up the heap with junk data ? I really didnt get that...

    • @Tugalou
      @Tugalou 3 месяца назад

      When malloc is called, a chunk of memory is allocated and a pointer to the beginning of that memory is returned. When free is called, that pointer is removed and the memory is marked as available for use again. The data still exists as it was until overwritten, but you can't access it through traditional methods.
      It's like a house with a lock on it. When you have the key to the lock (pointer from malloc), you can easily go inside and see what's there. If you were to lose the key (call free), you couldn't go inside and see what's there. You can still see what was there through untraditional means, maybe looking through a window (malloc again and look at data that hasn't been reset), or digging through the floor (overflow exploits).

  • @sandeepsiv
    @sandeepsiv 2 года назад

    Thanks ❤️

  • @prodigysonhiddenforareason1239
    @prodigysonhiddenforareason1239 2 года назад

    Thanks boss!!

  • @ozangonul7286
    @ozangonul7286 Месяц назад

    thanks

  • @sleepysafron347
    @sleepysafron347 2 года назад

    First of all, amazing video. Also what IDE are you using or is it even an IDE? I’m new to coding so sorry for the dumb question.

    • @PortfolioCourses
      @PortfolioCourses  2 года назад

      I'm glad that you enjoyed the video! :-) I am using Visual Studio Code in this video together with Terminal on a Mac. Visual Studio Code is an extremely popular text editor with computer programmers, I recommend it as well.

  • @FacundoTroitero
    @FacundoTroitero 2 года назад

    Nice. Where did you learn to explain things so easily and efficiently?

    • @FacundoTroitero
      @FacundoTroitero 2 года назад

      Nevermind, just visited your website, "20 years of teaching experience".

    • @PortfolioCourses
      @PortfolioCourses  2 года назад +1

      I'm glad to hear that you enjoy the explanations. :-)

    • @PortfolioCourses
      @PortfolioCourses  2 года назад +1

      Thanks for visiting the website! :-)

  • @Mnogojazyk
    @Mnogojazyk 2 года назад

    Is there another memory allocation function that allows a specified value to be assigned to each memory address, i.e., a variant of calloc?
    Also, do calloc and malloc work on doubles, longs, structure, etc.

    • @PortfolioCourses
      @PortfolioCourses  2 года назад

      No, there is just malloc, calloc, and then realloc for memory re-allocation. We could use malloc, and then memset() or memcpy() though to set the values of the block of memory that was allocated. And yes calloc and malloc will work with doubles, longs, structs and anything else really. :-)