Action against software patentsGnome2 LogoW3C LogoRed Hat Logo
Made with Libxml2 Logo

Module xmlmemory from libxml2

API Menu
API Indexes
Related links

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