Every program uses random access memory (RAM), but the ways in which that memory is divided out among the needy parts of the system varies widely. This paper surveys the options available, in the hope that the reader will be better equipped to choose an approach for a given project.

The mechanisms include statically allocating all memory, using one or more stacks, and using one or more heaps. In particular this paper will examine how the heap is implemented, and how that implementation an be modified to suit the needs of an embedded system.