O'Reilly logo

Palm OS Programming, 2nd Edition by Neil Rhodes, Julie McKeehan

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Dynamic Memory Allocation

Memory is allocated in chunks, which can be either relocatable (the Memory Manager can move them), or nonrelocatable (they can never move). Since there’s no virtual memory, and since the amount of memory is limited, it’s important to avoid fragmenting available memory.

Tip

Fragmenting means having free memory interspersed with allocated memory so that although there may be enough free memory available to satisfy a particular memory allocation, it isn’t contiguous, and therefore the memory allocation fails.

The Palm OS Memory Manager provides a mechanism for fighting fragmentation: relocatable blocks. When you allocate a relocatable block, you allow the Memory Manager to move that block as necessary to coalesce free memory blocks into contiguous space (see Figure 6-2). Of course, there may be times that you don’t want the memory block to be moved. In such cases, you can lock the block. This tells the Memory Manager not to move it until it is unlocked.

The Memory Manager can shuffle unlocked relocatable blocks as necessary
Figure 6-2. The Memory Manager can shuffle unlocked relocatable blocks as necessary

Using Memory Handles

Since the address of the memory block can move, the Memory Manager doesn’t return a pointer on allocation. Instead, it returns something called a handle . The handle itself doesn’t directly contain the address, instead, you call a Memory Manager routine to lock the handle; it returns the address of the ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required