There is a new edition of the book and this is an old link.
Both the stack and the heap are parts of memory that is available to your code to use at runtime, but they are structured in different ways. The stack stores values in the order it gets them and removes the values in the opposite order. All data on the stack must take up a known, fixed size. For data with a size unknown to us at compile time or a size that might change, we can store data on the heap instead.
You can find the latest version of this information here.