version 2003
PA_LockHandle (handle) char*
Parameter | Type | Description | |
handle | PA_Handle | The handle to lock | |
Function result | char* | Pointer to the data led to by handle |
Description
The routine PA_LockHandle locks the memory block led to by handle and returns a pointer to it.
This is useful if you call system traps that can move memory while using the handle. Remember to unlock the handle once you have completed your task so 4th Dimension can better avoid memory fragmentation.
NOTE
This lock is not an incremental lock. If you call PA_LockHandle 10 times on the same handle, one simple call to PA_UnlockHandle unlocks the handle.
The code is usually built like this :
pt = PA_LockHandle(aHandle); /* . . . code . . . */ PA_UnlockHandle(aHandle);
Example
Lock a handle before allocating new block of memory
typedef struct { short fValue; PA_Handle fArray[10]; } Sample; /* . . . code . . . */ // mySample has been allocated using PA_NewHandle( sizeof( Sample ) ) // We allocate memory via PA_NewHandle in a loop that de-references // the "parent" handle. We must lock it prior to this. Sample* p; p = (Sample*) PA_LockHandle( mySample ); for ( i = 0; i < 10; i++ ) { p->myArray[i] = PA_NewHandle(. . .); /* . . . code . . . */ } // Time to unlock the handle to prevent memory fragmentation PA_Unlock( mySample );
See Also
Error Handling
Use PA_GetLastError to see if an error occurred.