In this chapter, we've covered static and dynamic memory allocation, all of the available heap implementations in FreeRTOS, and how to implement memory hooks that let us keep an eye on our stacks and heaps. By understanding the trade-offs to be made when using the different allocation schemes, you'll be in a good position to choose the most appropriate method for each of your future projects.
In the next chapter, we'll discuss some of the details of using FreeRTOS in a multicore environment.