Module show_notes::e005

source ·
Expand description

Allocate it where?

  • Date: November 8, 2015
  • Subject: Returning functions from other functions, and thinking about the stack, the heap, and reference types.
  • Audio

§Notes

This episode, we look at returning functions from other functions, and as part of that discuss some basics about the stack and the heap—and why we need to care about them for returning functions.

The functions themselves are not especially interesting; they just show you the basic form you use to return functions from other functions, and how to then use them in another function. You’ll want to take a detailed look instead at the documentation for each (or just read the source!), because that’s where the meat of the discussion in this week’s code is.

§Corrigenda

  • Steve Klabnik pointed out that my description of Vector types as totally heap-allocated was misleading. It’s better to say that the contents of the Vector – its data – is heap-allocated, while the memory for the smart pointer and associated metadata are allocated on the stack. I had this in mind, and sort of alluded to it earlier in the discussion, but the way I actually said it was misleading at best.

  • Chad Sharp (@crossroads1112 on GitHub) clarified that in C99, C does support dynamic array allocation, though it became optional for compilers to implement it as of C11. I forgot about this because I spend so much of my time dealing with Visual C++, which does not support dynamic array allocation. (Notably, Visual C does; it is Visual C++ which does not: remember, C and C++ are related but distinct languages.)

Thanks to Steve and Chad for their helpful feedback!

§Sponsors

§Become a sponsor

§Follow

Functions§