STL does not necessarily use dynamic memory allocation. It makes use of a pattern called
allocators, which make it very possible to use static memory allocation for all objects,
including the internal objects used by STL containers. This is used in embedded systems quite
a bit.
There are also variations of the STL and various other libraries that are designed for
embedded systems that avoid dynamic memory allocation. You should see some of the development
frameworks used for making Gameboy, DS, and PSP games. Unlike the Java games you see on
phones and such, those games push their respective hardware to the limit and need heavy
control over all memory allocations to get there.