|
@@ -4,8 +4,10 @@
|
|
|
#include <mach-o/dyld.h> // for _NSGetExecutablePath
|
|
#include <mach-o/dyld.h> // for _NSGetExecutablePath
|
|
|
#endif
|
|
#endif
|
|
|
|
|
|
|
|
-static unsigned int s_alloc_cnt = 0;
|
|
|
|
|
-static unsigned int s_free_cnt = 0;
|
|
|
|
|
|
|
+#include "hatomic.h"
|
|
|
|
|
+
|
|
|
|
|
+static atomic_uint s_alloc_cnt = 0;
|
|
|
|
|
+static atomic_uint s_free_cnt = 0;
|
|
|
|
|
|
|
|
unsigned int hv_alloc_cnt() {
|
|
unsigned int hv_alloc_cnt() {
|
|
|
return s_alloc_cnt;
|
|
return s_alloc_cnt;
|
|
@@ -16,6 +18,7 @@ unsigned int hv_free_cnt() {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void* safe_malloc(size_t size) {
|
|
void* safe_malloc(size_t size) {
|
|
|
|
|
+ ATOMIC_INC(&s_alloc_cnt);
|
|
|
++s_alloc_cnt;
|
|
++s_alloc_cnt;
|
|
|
void* ptr = malloc(size);
|
|
void* ptr = malloc(size);
|
|
|
if (!ptr) {
|
|
if (!ptr) {
|
|
@@ -26,8 +29,8 @@ void* safe_malloc(size_t size) {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void* safe_realloc(void* oldptr, size_t newsize, size_t oldsize) {
|
|
void* safe_realloc(void* oldptr, size_t newsize, size_t oldsize) {
|
|
|
- ++s_alloc_cnt;
|
|
|
|
|
- ++s_free_cnt;
|
|
|
|
|
|
|
+ ATOMIC_INC(&s_alloc_cnt);
|
|
|
|
|
+ ATOMIC_INC(&s_free_cnt);
|
|
|
void* ptr = realloc(oldptr, newsize);
|
|
void* ptr = realloc(oldptr, newsize);
|
|
|
if (!ptr) {
|
|
if (!ptr) {
|
|
|
fprintf(stderr, "realloc failed!\n");
|
|
fprintf(stderr, "realloc failed!\n");
|
|
@@ -40,7 +43,7 @@ void* safe_realloc(void* oldptr, size_t newsize, size_t oldsize) {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void* safe_calloc(size_t nmemb, size_t size) {
|
|
void* safe_calloc(size_t nmemb, size_t size) {
|
|
|
- ++s_alloc_cnt;
|
|
|
|
|
|
|
+ ATOMIC_INC(&s_alloc_cnt);
|
|
|
void* ptr = calloc(nmemb, size);
|
|
void* ptr = calloc(nmemb, size);
|
|
|
if (!ptr) {
|
|
if (!ptr) {
|
|
|
fprintf(stderr, "calloc failed!\n");
|
|
fprintf(stderr, "calloc failed!\n");
|
|
@@ -50,7 +53,7 @@ void* safe_calloc(size_t nmemb, size_t size) {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void* safe_zalloc(size_t size) {
|
|
void* safe_zalloc(size_t size) {
|
|
|
- ++s_alloc_cnt;
|
|
|
|
|
|
|
+ ATOMIC_INC(&s_alloc_cnt);
|
|
|
void* ptr = malloc(size);
|
|
void* ptr = malloc(size);
|
|
|
if (!ptr) {
|
|
if (!ptr) {
|
|
|
fprintf(stderr, "malloc failed!\n");
|
|
fprintf(stderr, "malloc failed!\n");
|
|
@@ -64,7 +67,7 @@ void safe_free(void* ptr) {
|
|
|
if (ptr) {
|
|
if (ptr) {
|
|
|
free(ptr);
|
|
free(ptr);
|
|
|
ptr = NULL;
|
|
ptr = NULL;
|
|
|
- ++s_free_cnt;
|
|
|
|
|
|
|
+ ATOMIC_INC(&s_free_cnt);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|