ImageGear Professional v18.2 > API Reference Guide > Core Component API Reference > Core Component Functions Reference > Callback Register Functions > IG_mem_CB_register |
This function registers your own callback functions to be called to do large memory allocations, memory reallocations, and memory freeing.
Copy Code
|
|
---|---|
AT_ERRCOUNT ACCUAPI IG_mem_CB_register( LPFNIG_MEM_ALLOC lpfnAllocFunc, LPFNIG_MEM_REALLOC lpfnReAllocFunc, LPFNIG_MEM_FREE lpfnFreeFunc ); |
Name | Type | Description |
lpfnAllocFunc | LPFNIG_MEM_ALLOC | Far pointer to your function to be called for memory allocations. |
lpfnReAllocFunc | LPFNIG_MEM_REALLOC | Far pointer to your function to be called for memory reallocations. |
lpfnFreeFunc | LPFNIG_MEM_FREE | Far pointer to your function to be called to free memory free. |
Returns the number of ImageGear errors that occurred during this function call. If there are no errors, the return value is IGE_SUCCESS.
This function does not process image pixels.
Copy Code
|
|
---|---|
/* Memory Alloc callback function definition */ LPBYTE ACCUAPI MyMemAlloc(DWORD dwSize)/* number of bytes to alloc */ { /* Put your own memory allocation code here */ return( buffer); }; /* Memory ReAlloc callback function definition */ LPBYTE ACCUAPI MyMemReAlloc( LPBYTE lpBuffer, DWORD dwSize) { /* Put your own memory reallocation code here */ return( lpBuffer); }; /* Memory Free callback function definition */ LPBYTE ACCUAPI MyMemFree(LPBYTE lpBuffer) { /*Put your free-the-memory code here */ return NULL; }; /* Registration Example */ /* Example one */ /* Register your own callback functions for all memory routines */ nErrcount = IG_mem_CB_register(MyMemAlloc, MyMemReAlloc, MyMemFree); /* Example two */ /* Supply callbacks for memory alloc only */ nErrcount = IG_mem_CB_register(MyMemAlloc, NULL, NULL); |
As shown in the prototype, your memory callback functions must be of types LPFNIG_MEM_ALLOC, LPFNIG_MEM_REALLOC and LPFNIG_MEM_FREE.
Your memory allocation functions will only be used when large allocations (allocations greater than 1024) are performed. |
Set any of the three arguments to NULL if you want ImageGear to use its own definition for these functions.