RAVE
rave_alloc.c File Reference

Allocation routines for keeping track on memory. More...

#include "rave_alloc.h"
#include "rave_debug.h"
#include <stdlib.h>
#include <string.h>
#include <stdio.h>

Classes

struct  RaveHeapEntry_t
 Keeps track on one allocation. More...
 
struct  RaveHeap_t
 A linked list where each entry corresponds to one allocation. More...
 

Typedefs

typedef struct RaveHeapEntry_t RaveHeapEntry_t
 Keeps track on one allocation.
 
typedef struct RaveHeap_t RaveHeap_t
 A linked list where each entry corresponds to one allocation.
 

Functions

void * rave_alloc_malloc (const char *filename, int lineno, size_t sz)
 Allocates memory and keeps track on if it is released, overwritten and similar.
 
void * rave_alloc_calloc (const char *filename, int lineno, size_t npts, size_t sz)
 Same as calloc but debugged.
 
void * rave_alloc_realloc (const char *filename, int lineno, void *ptr, size_t sz)
 Same as realloc but debugged.
 
char * rave_alloc_strdup (const char *filename, int lineno, const char *str)
 Same as strdup but debugged.
 
void rave_alloc_free (const char *filename, int lineno, void *ptr)
 Releases the memory.
 
void rave_alloc_dump_heap (void)
 Dumps all blocks that not has been released.
 
void rave_alloc_print_statistics (void)
 Prints the statistics for the heap.
 

Detailed Description

Allocation routines for keeping track on memory.

Author
Anders Henja (Swedish Meteorological and Hydrological Institute, SMHI )
Date
2009-08-15

Typedef Documentation

◆ RaveHeap_t

typedef struct RaveHeap_t RaveHeap_t

A linked list where each entry corresponds to one allocation.

◆ RaveHeapEntry_t

typedef struct RaveHeapEntry_t RaveHeapEntry_t

Keeps track on one allocation.

Function Documentation

◆ rave_alloc_calloc()

void * rave_alloc_calloc ( const char * filename,
int lineno,
size_t npts,
size_t sz )

Same as calloc but debugged.

Parameters
[in]filenamethe name of the file the allocation occurs in
[in]linenothe linenumber
[in]nptsnumber of points
[in]szthe number of bytes to be allocated

◆ rave_alloc_dump_heap()

void rave_alloc_dump_heap ( void )

Dumps all blocks that not has been released.

◆ rave_alloc_free()

void rave_alloc_free ( const char * filename,
int lineno,
void * ptr )

Releases the memory.

Parameters
[in]filenamethe name of the file the allocation occurs in
[in]linenothe linenumber
[in]ptrthe pointer that should be freed

◆ rave_alloc_malloc()

void * rave_alloc_malloc ( const char * filename,
int lineno,
size_t sz )

Allocates memory and keeps track on if it is released, overwritten and similar.

Parameters
[in]filenamethe name of the file the allocation occurs in
[in]linenothe linenumber
[in]szthe number of bytes to be allocated

◆ rave_alloc_print_statistics()

void rave_alloc_print_statistics ( void )

Prints the statistics for the heap.

◆ rave_alloc_realloc()

void * rave_alloc_realloc ( const char * filename,
int lineno,
void * ptr,
size_t sz )

Same as realloc but debugged.

Parameters
[in]filenamethe name of the file the allocation occurs in
[in]linenothe linenumber
[in]ptrthe original pointer
[in]szthe number of bytes to be allocated

◆ rave_alloc_strdup()

char * rave_alloc_strdup ( const char * filename,
int lineno,
const char * str )

Same as strdup but debugged.

Parameters
[in]filenamethe name of the file the allocation occurs in
[in]linenothe linenumber
[in]strthe number of bytes to be allocated