#include <dk.h>
#include <string.h>
Go to the source code of this file.
Defines | |
#define | DK_MEMRES(ptr, sz) memset(((void *)(ptr)),0,((size_t)(sz))) |
Reset sz bytes in buffer ptr. | |
#define | DK_MEMCPY(d, s, n) memcpy(((void *)(d)),((void *)(s)),((size_t)(n))) |
Copy n bytes from buffer s to buffer d. | |
#define | DK_MEMCMP(a, b, n) memcmp(((void *)(a)),((void *)(b)),((size_t)(n))) |
Compare n bytes in buffers a and b, return 0 for equal buffers. | |
#define | dk_new(t, s) (t *)dkmem_alloc_tracked(sizeof(t),((size_t)s)) |
Allocate memory, s bytes of type t, return pointer on success. | |
#define | dk_delete(p) dkmem_free((void *)(p)) |
Release memory, buffer p. | |
Functions | |
void | dkmem_res (void *ptr, size_t n) |
Reset memory. | |
void | dkmem_cpy (void *d, void *s, size_t n) |
Copy memory. | |
int | dkmem_cmp (void *s1, void *s2, size_t n) |
Compare memory. | |
void * | dkmem_alloc (size_t elsize, size_t nelem) |
Allocate memory. | |
void * | dkmem_alloc_tracked (size_t elsize, size_t nelem) |
Allocate memory, keep track of allocated size. | |
void | dkmem_free (void *ptr) |
Release memory. | |
unsigned long | dkmem_get_track (int usehb) |
Get amount of memory allocated. |
This module provides macros and functions for portable memory allocation.
Use the dk_new() and dk_delete() macros to allocate and release memory, not the dkmem_alloc(), dkmem_alloc_tracked() and dkmem_free() functions.
Use the DK_MEMRES(), DK_MEMCPY() and DK_MEMCMP() macros to reset, copy and compare memory buffers, not the dkmem_res(), dkmem_cpy() and dkmem_cmp() functions. The macros invoke the functions provided by the system. I.e. DM_MEMRES() is mapped to either memset() or bzero() or -- if these functions are not available -- dkmem_res(). Typically the functions in the C runtime library are implemented more efficiently than the fallback functions provided by the dkmem module.
The only function in the dkmem module for direct use is dkmem_get_track().
#define dk_delete | ( | p | ) | dkmem_free((void *)(p)) |
Release memory, buffer p.
#define DK_MEMCMP | ( | a, | |||
b, | |||||
n | ) | memcmp(((void *)(a)),((void *)(b)),((size_t)(n))) |
Compare n bytes in buffers a and b, return 0 for equal buffers.
#define DK_MEMCPY | ( | d, | |||
s, | |||||
n | ) | memcpy(((void *)(d)),((void *)(s)),((size_t)(n))) |
Copy n bytes from buffer s to buffer d.
#define DK_MEMRES | ( | ptr, | |||
sz | ) | memset(((void *)(ptr)),0,((size_t)(sz))) |
Reset sz bytes in buffer ptr.
#define dk_new | ( | t, | |||
s | ) | (t *)dkmem_alloc_tracked(sizeof(t),((size_t)s)) |
void* dkmem_alloc | ( | size_t | elsize, | |
size_t | nelem | |||
) |
Allocate memory.
Attempt to allocate nelem elements of element size elsize.
elsize | Size of one element to allocate. | |
nelem | Number of elements to allocate. |
void* dkmem_alloc_tracked | ( | size_t | elsize, | |
size_t | nelem | |||
) |
Allocate memory, keep track of allocated size.
Attempt to allocate nelem elements of element size elsize and keep track of the summary size of allocated memory.
elsize | Size of one element to allocate. | |
nelem | Number of elements to allocate. |
int dkmem_cmp | ( | void * | s1, | |
void * | s2, | |||
size_t | n | |||
) |
Compare memory.
Compare n bytes in buffers s1 and s2.
s1 | Pointer to one buffer. | |
s2 | Pointer to the other buffer. | |
n | Number of bytes to compare. |
void dkmem_cpy | ( | void * | d, | |
void * | s, | |||
size_t | n | |||
) |
Copy memory.
Copy n bytes from s to d.
d | Pointer to destination buffer. | |
s | Pointer to source buffer. | |
n | Number of bytes to copy. |
void dkmem_free | ( | void * | ptr | ) |
Release memory.
Release memory previously allocated by dkmem_alloc() or dkmem_alloc_tracked().
ptr | Pointer to memory. |
unsigned long dkmem_get_track | ( | int | usehb | ) |
Get amount of memory allocated.
Get number of bytes already allocated.
usehb | Flag to indicate whether the higher or lower 32 bits of the number are requested. |
void dkmem_res | ( | void * | ptr, | |
size_t | n | |||
) |
Reset memory.
Set all bytes in buffer ptr (n bytes) to 0x00.
ptr | Pointer to buffer. | |
n | Number of bytes in buffer. |