fix: minor memory cleanup
This commit is contained in:
parent
9aee9fe970
commit
d3cb7d1b21
|
@ -12,6 +12,8 @@
|
||||||
|
|
||||||
#include "named_array.h"
|
#include "named_array.h"
|
||||||
|
|
||||||
|
#define assert__(x) for ( ; !(x) ; assert(x) )
|
||||||
|
|
||||||
void named_array_init(NamedArray* array, unsigned int element_size, unsigned int max_elements) {
|
void named_array_init(NamedArray* array, unsigned int element_size, unsigned int max_elements) {
|
||||||
array->element_size = element_size;
|
array->element_size = element_size;
|
||||||
array->max_element_count = max_elements;
|
array->max_element_count = max_elements;
|
||||||
|
@ -28,6 +30,7 @@ void named_array_init(NamedArray* array, unsigned int element_size, unsigned int
|
||||||
array->used_markers = (unsigned char*) malloc(array->marker_count);
|
array->used_markers = (unsigned char*) malloc(array->marker_count);
|
||||||
#endif
|
#endif
|
||||||
memset(array->used_markers, 0, sizeof(unsigned char) * array->marker_count);
|
memset(array->used_markers, 0, sizeof(unsigned char) * array->marker_count);
|
||||||
|
memset(array->elements, 0, element_size * max_elements);
|
||||||
}
|
}
|
||||||
|
|
||||||
char named_array_used(NamedArray* array, unsigned int id) {
|
char named_array_used(NamedArray* array, unsigned int id) {
|
||||||
|
@ -56,6 +59,17 @@ void* named_array_alloc(NamedArray* array, unsigned int* new_id) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define BYTE_TO_BINARY_PATTERN "%c%c%c%c%c%c%c%c"
|
||||||
|
#define BYTE_TO_BINARY(byte) \
|
||||||
|
(byte & 0x80 ? '1' : '0'), \
|
||||||
|
(byte & 0x40 ? '1' : '0'), \
|
||||||
|
(byte & 0x20 ? '1' : '0'), \
|
||||||
|
(byte & 0x10 ? '1' : '0'), \
|
||||||
|
(byte & 0x08 ? '1' : '0'), \
|
||||||
|
(byte & 0x04 ? '1' : '0'), \
|
||||||
|
(byte & 0x02 ? '1' : '0'), \
|
||||||
|
(byte & 0x01 ? '1' : '0')
|
||||||
|
|
||||||
void* named_array_reserve(NamedArray* array, unsigned int id) {
|
void* named_array_reserve(NamedArray* array, unsigned int id) {
|
||||||
if(!named_array_used(array, id)) {
|
if(!named_array_used(array, id)) {
|
||||||
unsigned int j = (id % 8);
|
unsigned int j = (id % 8);
|
||||||
|
@ -63,6 +77,11 @@ void* named_array_reserve(NamedArray* array, unsigned int id) {
|
||||||
|
|
||||||
assert(!named_array_used(array, id));
|
assert(!named_array_used(array, id));
|
||||||
array->used_markers[i] |= (unsigned char) 1 << j;
|
array->used_markers[i] |= (unsigned char) 1 << j;
|
||||||
|
|
||||||
|
assert__(named_array_used(array, id)) {
|
||||||
|
printf("%s: id %d is not used in [%d,%d] = "BYTE_TO_BINARY_PATTERN"\n",__func__,id,i,j, BYTE_TO_BINARY(array->used_markers[i]));
|
||||||
|
}
|
||||||
|
|
||||||
assert(named_array_used(array, id));
|
assert(named_array_used(array, id));
|
||||||
|
|
||||||
unsigned char* ptr = &array->elements[id * array->element_size];
|
unsigned char* ptr = &array->elements[id * array->element_size];
|
||||||
|
|
Loading…
Reference in New Issue
Block a user