summaryrefslogtreecommitdiff
path: root/qstd/memory.c
diff options
context:
space:
mode:
Diffstat (limited to 'qstd/memory.c')
-rw-r--r--qstd/memory.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/qstd/memory.c b/qstd/memory.c
index f245289..6ea43f7 100644
--- a/qstd/memory.c
+++ b/qstd/memory.c
@@ -209,6 +209,17 @@ void heap_free(
heap_free_aligned(h, p);
}
+int heap_block_size(void* ptr) {
+ unsigned char* a;
+ int f = ~((unsigned)-1 >> 1);
+ ptrdiff_t shift;
+ a = ptr;
+ shift = a[-1];
+ shift += 256 * shift == 0;
+ a -= shift;
+ return ((int*)a)[-1] & ~f;
+}
+
/*
void print_blocks(Heap* h) {
int i, o;