malloc vs calloc Differences Explained | C Programming Tutorial

Поділитися
Вставка
  • Опубліковано 23 гру 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 😊

  • @aadhuu
    @aadhuu 2 роки тому +2

    Wow! An amazing explanation indeed! Thanks a lot!

  • @TheCoder557
    @TheCoder557 9 місяців тому

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

  • @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?

  • @Fillmore634b
    @Fillmore634b 22 дні тому

    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?

  • @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! :-)

  • @kcvinu
    @kcvinu 11 місяців тому

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

  • @shadowrealm8937
    @shadowrealm8937 Рік тому

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

    • @bsbharat0705
      @bsbharat0705 10 місяців тому

      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.

  • @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 6 місяців тому

    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.

  • @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

  • @ChrisNoesen
    @ChrisNoesen 10 місяців тому

    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  10 місяців тому

      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 10 місяців тому

      @@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  10 місяців тому

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

  • @theyayaa
    @theyayaa 11 місяців тому

    Is the combination of malloc and memset better than calloc?

  • @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 4 місяці тому

      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).

  • @quantumastrologer5599
    @quantumastrologer5599 2 роки тому

    Great voice, great explanation

  • @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.

  • @ironmonkey1990
    @ironmonkey1990 9 місяців тому

    Thank you !

  • @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! :-)

  • @sandeepsiv
    @sandeepsiv 2 роки тому

    Thanks ❤️

  • @prodigysonhiddenforareason1239
    @prodigysonhiddenforareason1239 2 роки тому

    Thanks boss!!

  • @ozangonul7286
    @ozangonul7286 2 місяці тому

    thanks

  • @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. :-)