While your application is running, all memory blocks that are allocated are automatically marked with an owner ID as belonging to the application. When the application quits, the Memory Manager scans the dynamic heap, freeing any such marked blocks, while leaving any system blocks alone.
We shouldn’t need to tell you that a well-written application should clean up after itself and not rely on this behavior of the system. Given the realities of application development, however, it is a good thing for users that this system behavior exists. Otherwise, starting and then stopping an application might suck up space in the dynamic heap. Such a bug would be very aggravating.
Owner IDs are useful for debugging as well. If you run your application with 3.5 OS or later debugging ROM (see Chapter 7), the owner IDs are used to warn you if you haven’t freed all the memory you’ve allocated when you quit the application.
Sometimes, while your application is running, the system needs to allocate system memory whose contents are maintained (for example, if an application opens TCP/IP, the system allocates memory, including buffers, that remain even when the application closes). It marks a block as system memory by setting the owner ID to 0.
Although it doesn’t happen often, occasionally, an application may need to allocate a memory chunk that is maintained when the application closes. The best example of this case is when Application 1 launches Application ...