ImageGear for C and C++ on Linux - Updated
IG_mem_CB_register
API Reference Guide > Core Component API Reference > Core Component Functions Reference > Callback Register Functions > IG_mem_CB_register

This function has been deprecated and will be removed from the public API in a future release. No alternative is available in the ImageGear for C and C++ API. Applications that require greater control over memory allocations must substitute C runtime functions malloc, realloc, and free with their own implementations.

Declaration:

 
Copy Code
AT_ERRCOUNT ACCUAPI IG_mem_CB_register(
        LPFNIG_MEM_ALLOC lpfnAllocFunc, 
        LPFNIG_MEM_REALLOC lpfnReAllocFunc, 
        LPFNIG_MEM_FREE lpfnFreeFunc
);

Arguments:

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.

Return Value:

Returns the number of ImageGear errors that occurred during this function call. If there are no errors, the return value is IGE_SUCCESS.

Supported Raster Image Formats:

This function does not process image pixels.

Example:

 
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);

Remarks:

This function registers your own callback functions to be called to do large memory allocations, memory reallocations, and memory freeing.

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.