So in an embedded systems unit, that i\'m taking at uni next year, we will learn that dynamic data structures are a bad thing to have in an embedded system program. but the
It depends as the meaning of "embedded" in my view broadened in the last 4 years.
Traditionally, embedded devices had microcontrollers on them and generally no operating system. No protected memory, and were single threaded. You would have to be extremely careful with malloced memory because it's so easy to run out of it when you've only got 32KB of it available for example. So generally, we'd write our code with fixed sized buffers and never use malloc or at if it was every used - very sparingly.
In the last few years we are seeing what are essentially single chip pc's or micro boards that are easily as powerful as our old Pentium PC's. RAM prices are so cheap now and so small that the memory limitations are nothing like they were. They also often run embedded linux or wince so now we have the ability to use dynamic memory more liberally.
With this is the ability to use a much wider range of languages including Java, C++, many scripting languages and other languages that provide buffer overrun protection and exception handing and other higher level languages. So really, those old problems are not like they used to be.
I suspect all this new available hardware comes a new range of issues.
There are a number of reasons not to use malloc (or equivalent) in an embedded system.
Best of all - if you do not dynamically allocate memory then you can't get memory leaks.