Dynamic Memory Management for Embedded Systems