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