# ## Module xmlmemory from libxml2

API Menu
Main Menu Developer Menu Code Examples API Menu Parser API Tree API Reader API XML Guidelines ChangeLog
API Indexes
Alphabetic Constructors Functions/Types Modules Symbols
Related links
Mail archive XSLT libxslt DOM gdome2 XML-DSig xmlsec FTP Windows binaries Solaris binaries MacOsX binaries lxml Python bindings Perl bindings C++ bindings PHP bindings Pascal bindings Ruby bindings Tcl bindings Bug Tracker
provides interfaces for the memory allocator, including debugging capabilities. ## Table of Contents
    #define DEBUG_MEMORY
    Variable xmlMallocFunc xmlMalloc
    Variable xmlMallocFunc xmlMallocAtomic
    Variable xmlStrdupFunc xmlMemStrdup
    Variable xmlReallocFunc xmlRealloc
    void	xmlCleanupMemory		(void)
    Function type: xmlFreeFunc
    void	xmlFreeFunc			(void * mem)
    int	xmlGcMemGet			(xmlFreeFunc * freeFunc,
    					 xmlMallocFunc * mallocFunc,
    					 xmlMallocFunc * mallocAtomicFunc,
    					 xmlReallocFunc * reallocFunc,
    					 xmlStrdupFunc * strdupFunc)
    int	xmlGcMemSetup			(xmlFreeFunc freeFunc,
    					 xmlMallocFunc mallocFunc,
    					 xmlMallocFunc mallocAtomicFunc,
    					 xmlReallocFunc reallocFunc,
    					 xmlStrdupFunc strdupFunc)
    int	xmlInitMemory			(void)
    void *	xmlMallocAtomicLoc		(size_t size,
    					 const char * file,
    					 int line)
    Function type: xmlMallocFunc
    void *	xmlMallocFunc			(size_t size)
    void *	xmlMallocLoc			(size_t size,
    					 const char * file,
    					 int line)
    int	xmlMemBlocks			(void)
    void	xmlMemDisplay			(FILE * fp)
    void	xmlMemDisplayLast		(FILE * fp,
    					 long nbBytes)
    void	xmlMemFree			(void * ptr)
    int	xmlMemGet			(xmlFreeFunc * freeFunc,
    					 xmlMallocFunc * mallocFunc,
    					 xmlReallocFunc * reallocFunc,
    					 xmlStrdupFunc * strdupFunc)
    void *	xmlMemMalloc			(size_t size)
    void *	xmlMemRealloc			(void * ptr,
    					 size_t size)
    int	xmlMemSetup			(xmlFreeFunc freeFunc,
    					 xmlMallocFunc mallocFunc,
    					 xmlReallocFunc reallocFunc,
    					 xmlStrdupFunc strdupFunc)
    void	xmlMemShow			(FILE * fp,
    					 int nr)
    char *	xmlMemStrdupLoc			(const char * str,
    					 const char * file,
    					 int line)
    int	xmlMemUsed			(void)
    void	xmlMemoryDump			(void)
    char *	xmlMemoryStrdup			(const char * str)
    Function type: xmlReallocFunc
    void *	xmlReallocFunc			(void * mem,
    					 size_t size)
    void *	xmlReallocLoc			(void * ptr,
    					 size_t size,
    					 const char * file,
    					 int line)
    Function type: xmlStrdupFunc
    char *	xmlStrdupFunc			(const char * str)
## Description ### Macro: DEBUG_MEMORY
    #define DEBUG_MEMORY
DEBUG_MEMORY replaces the allocator with a collect and debug shell to the libc allocator. DEBUG_MEMORY should only be activated when debugging libxml i.e. if libxml has been configured with --with-debug-mem too. #define DEBUG_MEMORY_FREED #define DEBUG_MEMORY_LOCATION ### Function: xmlCleanupMemory
    void	xmlCleanupMemory		(void)
Free up all the memory allocated by the library for its own use. This should not be called by user level code. ### Function type: xmlFreeFunc
    Function type: xmlFreeFunc
    void	xmlFreeFunc			(void * mem)
Signature for a free() implementation.
`mem`: | an already allocated block of memory
### Function: xmlGcMemGet
    int	xmlGcMemGet			(xmlFreeFunc * freeFunc,
    					 xmlMallocFunc * mallocFunc,
    					 xmlMallocFunc * mallocAtomicFunc,
    					 xmlReallocFunc * reallocFunc,
    					 xmlStrdupFunc * strdupFunc)
Provides the memory access functions set currently in use The mallocAtomicFunc is specialized for atomic block allocations (i.e. of areas useful for garbage collected memory allocators
`freeFunc`: | place to save the free() function in use
`mallocFunc`: | place to save the malloc() function in use
`mallocAtomicFunc`: | place to save the atomic malloc() function in use
`reallocFunc`: | place to save the realloc() function in use
`strdupFunc`: | place to save the strdup() function in use
`Returns`: | 0 on success
### Function: xmlGcMemSetup
    int	xmlGcMemSetup			(xmlFreeFunc freeFunc,
    					 xmlMallocFunc mallocFunc,
    					 xmlMallocFunc mallocAtomicFunc,
    					 xmlReallocFunc reallocFunc,
    					 xmlStrdupFunc strdupFunc)
Override the default memory access functions with a new set This has to be called before any other libxml routines ! The mallocAtomicFunc is specialized for atomic block allocations (i.e. of areas useful for garbage collected memory allocators Should this be blocked if there was already some allocations done ?
`freeFunc`: | the free() function to use
`mallocFunc`: | the malloc() function to use
`mallocAtomicFunc`: | the malloc() function to use for atomic allocations
`reallocFunc`: | the realloc() function to use
`strdupFunc`: | the strdup() function to use
`Returns`: | 0 on success
### Function: xmlInitMemory
    int	xmlInitMemory			(void)
Initialize the memory layer.
`Returns`: | 0 on success
### Function: xmlMallocAtomicLoc
    void *	xmlMallocAtomicLoc		(size_t size,
    					 const char * file,
    					 int line)
a malloc() equivalent, with logging of the allocation info.
`size`: | an int specifying the size in byte to allocate.
`file`: | the file name or NULL
`line`: | the line number
`Returns`: | a pointer to the allocated area or NULL in case of lack of memory.
### Function type: xmlMallocFunc
    Function type: xmlMallocFunc
    void *	xmlMallocFunc			(size_t size)
Signature for a malloc() implementation.
`size`: | the size requested in bytes
`Returns`: | a pointer to the newly allocated block or NULL in case of error.
### Function: xmlMallocLoc
    void *	xmlMallocLoc			(size_t size,
    					 const char * file,
    					 int line)
a malloc() equivalent, with logging of the allocation info.
`size`: | an int specifying the size in byte to allocate.
`file`: | the file name or NULL
`line`: | the line number
`Returns`: | a pointer to the allocated area or NULL in case of lack of memory.
### Function: xmlMemBlocks
    int	xmlMemBlocks			(void)
Provides the number of memory areas currently allocated
`Returns`: | an int representing the number of blocks
### Function: xmlMemDisplay
    void	xmlMemDisplay			(FILE * fp)
show in-extenso the memory blocks allocated
`fp`: | a FILE descriptor used as the output file, if NULL, the result is written to the file .memorylist
### Function: xmlMemDisplayLast
    void	xmlMemDisplayLast		(FILE * fp,
    					 long nbBytes)
the last nbBytes of memory allocated and not freed, useful for dumping the memory left allocated between two places at runtime.
`fp`: | a FILE descriptor used as the output file, if NULL, the result is written to the file .memorylist
`nbBytes`: | the amount of memory to dump
### Function: xmlMemFree
    void	xmlMemFree			(void * ptr)
a free() equivalent, with error checking.
`ptr`: | the memory block pointer
### Function: xmlMemGet
    int	xmlMemGet			(xmlFreeFunc * freeFunc,
    					 xmlMallocFunc * mallocFunc,
    					 xmlReallocFunc * reallocFunc,
    					 xmlStrdupFunc * strdupFunc)
Provides the memory access functions set currently in use
`freeFunc`: | place to save the free() function in use
`mallocFunc`: | place to save the malloc() function in use
`reallocFunc`: | place to save the realloc() function in use
`strdupFunc`: | place to save the strdup() function in use
`Returns`: | 0 on success
### Function: xmlMemMalloc
    void *	xmlMemMalloc			(size_t size)
a malloc() equivalent, with logging of the allocation info.
`size`: | an int specifying the size in byte to allocate.
`Returns`: | a pointer to the allocated area or NULL in case of lack of memory.
### Function: xmlMemRealloc
    void *	xmlMemRealloc			(void * ptr,
    					 size_t size)
a realloc() equivalent, with logging of the allocation info.
`ptr`: | the initial memory block pointer
`size`: | an int specifying the size in byte to allocate.
`Returns`: | a pointer to the allocated area or NULL in case of lack of memory.
### Function: xmlMemSetup
    int	xmlMemSetup			(xmlFreeFunc freeFunc,
    					 xmlMallocFunc mallocFunc,
    					 xmlReallocFunc reallocFunc,
    					 xmlStrdupFunc strdupFunc)
Override the default memory access functions with a new set This has to be called before any other libxml routines ! Should this be blocked if there was already some allocations done ?
`freeFunc`: | the free() function to use
`mallocFunc`: | the malloc() function to use
`reallocFunc`: | the realloc() function to use
`strdupFunc`: | the strdup() function to use
`Returns`: | 0 on success
### Function: xmlMemShow
    void	xmlMemShow			(FILE * fp,
    					 int nr)
show a show display of the memory allocated, and dump the @nr last allocated areas which were not freed
`fp`: | a FILE descriptor used as the output file
`nr`: | number of entries to dump
### Function: xmlMemStrdupLoc
    char *	xmlMemStrdupLoc			(const char * str,
    					 const char * file,
    					 int line)
a strdup() equivalent, with logging of the allocation info.
`str`: | the initial string pointer
`file`: | the file name or NULL
`line`: | the line number
`Returns`: | a pointer to the new string or NULL if allocation error occurred.
### Function: xmlMemUsed
    int	xmlMemUsed			(void)
Provides the amount of memory currently allocated
`Returns`: | an int representing the amount of memory allocated.
### Function: xmlMemoryDump
    void	xmlMemoryDump			(void)
Dump in-extenso the memory blocks allocated to the file .memorylist ### Function: xmlMemoryStrdup
    char *	xmlMemoryStrdup			(const char * str)
a strdup() equivalent, with logging of the allocation info.
`str`: | the initial string pointer
`Returns`: | a pointer to the new string or NULL if allocation error occurred.
### Function type: xmlReallocFunc
    Function type: xmlReallocFunc
    void *	xmlReallocFunc			(void * mem,
    					 size_t size)
Signature for a realloc() implementation.
`mem`: | an already allocated block of memory
`size`: | the new size requested in bytes
`Returns`: | a pointer to the newly reallocated block or NULL in case of error.
### Function: xmlReallocLoc
    void *	xmlReallocLoc			(void * ptr,
    					 size_t size,
    					 const char * file,
    					 int line)
a realloc() equivalent, with logging of the allocation info.
`ptr`: | the initial memory block pointer
`size`: | an int specifying the size in byte to allocate.
`file`: | the file name or NULL
`line`: | the line number
`Returns`: | a pointer to the allocated area or NULL in case of lack of memory.
### Function type: xmlStrdupFunc
    Function type: xmlStrdupFunc
    char *	xmlStrdupFunc			(const char * str)
Signature for an strdup() implementation.
`str`: | a zero terminated string
`Returns`: | the copy of the string or NULL in case of error.
Daniel Veillard