Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
epidemian
GitHub Repository: epidemian/gravity
Path: blob/master/src/shared/gravity_memory.h
1214 views
1
//
2
// gravity_memory.h
3
// gravity
4
//
5
// Created by Marco Bambini on 20/03/16.
6
// Copyright © 2016 Creolabs. All rights reserved.
7
//
8
9
#ifndef __GRAVITY_MEMORY__
10
#define __GRAVITY_MEMORY__
11
12
#include <stdio.h>
13
#include <stdlib.h>
14
#include <stdbool.h>
15
16
// memory debugger must be turned on ONLY with GuardMalloc ON
17
#define GRAVITY_MEMORY_DEBUG 0
18
19
#if GRAVITY_MEMORY_DEBUG
20
#define mem_init() memdebug_init()
21
#define mem_stat() memdebug_stat()
22
#define mem_alloc memdebug_malloc0
23
#define mem_calloc memdebug_calloc
24
#define mem_realloc memdebug_realloc
25
#define mem_free(v) memdebug_free((void *)v)
26
#define mem_check(v) memdebug_setcheck(v)
27
#define mem_status memdebug_status
28
#define mem_leaks() memdebug_leaks()
29
#define mem_remove memdebug_remove
30
#else
31
#define mem_init()
32
#define mem_stat()
33
#define mem_alloc(size) calloc(1, size)
34
#define mem_calloc calloc
35
#define mem_realloc realloc
36
#define mem_free(v) free((void *)v)
37
#define mem_check(v)
38
#define mem_status() 0
39
#define mem_leaks() 0
40
#define mem_remove(_v)
41
#endif
42
43
#if GRAVITY_MEMORY_DEBUG
44
void memdebug_init(void);
45
void *memdebug_malloc(size_t size);
46
void *memdebug_malloc0(size_t size);
47
void *memdebug_calloc(size_t num, size_t size);
48
void *memdebug_realloc(void *ptr, size_t new_size);
49
void memdebug_free(void *ptr);
50
size_t memdebug_leaks (void);
51
size_t memdebug_status (void);
52
void memdebug_setcheck(bool flag);
53
void memdebug_stat(void);
54
bool memdebug_remove(void *ptr);
55
#endif
56
57
#endif
58
59