#

## 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 unsigned 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