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.
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 ...
Get Palm OS Programming, 2nd Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.