master
cc 60 lines 1.18 KB
Raw
1 #include <cstdlib>
2 #include <memory>
3
4 #include "daemon/pulse/pulse-ml.h"
5
6 void *operator new(size_t size)
7 {
8 void *ptr = malloc(size);
9 if (!ptr)
10 throw std::bad_alloc();
11
12 pulse_ml_memory_allocated(size);
13 workers_memory_call(WORKERS_MEMORY_CALL_LIBC_MALLOC);
14 return ptr;
15 }
16
17 void *operator new[](size_t size)
18 {
19 void *ptr = malloc(size);
20 if (!ptr)
21 throw std::bad_alloc();
22
23 pulse_ml_memory_allocated(size);
24 workers_memory_call(WORKERS_MEMORY_CALL_LIBC_MALLOC);
25 return ptr;
26 }
27
28 void operator delete(void *ptr, size_t size) noexcept
29 {
30 if (ptr) {
31 pulse_ml_memory_freed(size);
32 workers_memory_call(WORKERS_MEMORY_CALL_LIBC_FREE);
33 free(ptr);
34 }
35 }
36
37 void operator delete[](void *ptr, size_t size) noexcept
38 {
39 if (ptr) {
40 pulse_ml_memory_freed(size);
41 workers_memory_call(WORKERS_MEMORY_CALL_LIBC_FREE);
42 free(ptr);
43 }
44 }
45
46 void operator delete(void *ptr) noexcept
47 {
48 if (ptr) {
49 workers_memory_call(WORKERS_MEMORY_CALL_LIBC_FREE);
50 free(ptr);
51 }
52 }
53
54 void operator delete[](void *ptr) noexcept
55 {
56 if (ptr) {
57 workers_memory_call(WORKERS_MEMORY_CALL_LIBC_FREE);
58 free(ptr);
59 }
60 }