Concerning using DmNewHandle, do I treat that handle just as if it were a
handle from MemHandleNew? That is:
VoidHand hTest = DmNewHandle(m_DescriptorDB, 1000);
// Test for success here
char ** pTest = (char **) MemHandleLock(hTest);
// Test for success here
// Use the chunk here
MemPtrUnlock(pTest);
MemPtrFree(pTest);
Thanks,
At 5/21/99 04:36 PM, you wrote:
>At 4:01 PM -0700 5/21/99, Jason Dawes wrote:
>>70 * 2000 = 140,000. Somehow I think that the Palm is going to have a
>>little trouble allocating 136K of memory when it only has 96K total. You
>>need to use a database.
>
>Or at least use storage heap space. You can call DmNewHandle to get a
>chunk of memory in the storage heap that is not associated with any
>database.
>
>If these strings really are temporary, that may be what you want. Of
>course, you'll still be restricted to the per-chunk limit of a bit less
>than 64K... and if you're smart, you'll make sure you can use smaller
>chunks so your allocator can still work when memory is nearly full or very
>fragmented.
>
>I'd suggest avoiding 1 record per string. Each record in a record database
>uses around 20 bytes of pure overhead, so with 2000 records that's 40K just
>for the management.
>
>DmNewHandle chunks require only 12 bytes of overhead each -- the same
>amount as is required for a handle allocated from the dynamic heap. So
>play with the strings-per-chunk value to tune it for space overhead vs time
>overhead.
>
>On the other hand, if your strings aren't really temporary, you might be a
>lot better off making them resources as part of a companion database for
>your app...
>
> --Bob
>
>
>
- Alan Macy
http://www.ResponsiveSoftware.com
Time and Billing for Consultants and Others