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

MemoryTestAPIs Example

We have written a small sample program to help you test memory usage. Our MemoryTestAPIs example provides menu items that call many of the Memory Manager APIs. It allows you to test what happens when certain calls are made to the Memory Manager APIs by tapping, rather than requiring you to write code. Figure 6-3 shows the menus of the application.

The menus of the MemoryTestAPIs application
Figure 6-3. The menus of the MemoryTestAPIs application

The Code

There is no sanity checking before calling functions in this code (it is quite intentional!). For example, it doesn’t check to see whether we’ve allocated a handle before locking. The reason for this is so you, as a user, can call the APIs and see what the OS does with different sequences of calls.

Let’s walk through the code for each of the menus in order. We’ll look at the Handle menu and see what tricks we can cause when creating, freeing, locking, and unlocking handles. Next, we will mess about with pointers in FeatureMem menu. The last menu gives you information about the stack.

The code for all the Handle menu items share the following two variables:

static MemHandle gHandle;
static MemPtr gPointer;

Handle MemHandleNew

This code calls MemHandleNew , allocating 1,000 bytes. If the function returns NULL, it displays an Alert notifying the user:

gHandle = MemHandleNew(1000);
if (!gHandle)
  DisplayOutOfMemoryAlert(  );

Handle MemHandleFree

This code ...

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