aboutsummaryrefslogtreecommitdiff
path: root/NorthstarDedicatedTest/memalloc.h
diff options
context:
space:
mode:
authorp0358 <p0358@users.noreply.github.com>2021-12-30 06:26:10 +0100
committerp0358 <p0358@users.noreply.github.com>2021-12-30 06:26:10 +0100
commit4f7c3d02943a38941b79a638c5607b2b7f668956 (patch)
tree57cf52a0fcf5aaebedc7c8340a88038857c50174 /NorthstarDedicatedTest/memalloc.h
parentcec11fbdefa6e96cffd635fe0047de5245764cc9 (diff)
downloadNorthstarLauncher-4f7c3d02943a38941b79a638c5607b2b7f668956.tar.gz
NorthstarLauncher-4f7c3d02943a38941b79a638c5607b2b7f668956.zip
actually use custom allocation, override allocators of curl and rapidjson
Diffstat (limited to 'NorthstarDedicatedTest/memalloc.h')
-rw-r--r--NorthstarDedicatedTest/memalloc.h40
1 files changed, 39 insertions, 1 deletions
diff --git a/NorthstarDedicatedTest/memalloc.h b/NorthstarDedicatedTest/memalloc.h
index fe3c5255..d9277694 100644
--- a/NorthstarDedicatedTest/memalloc.h
+++ b/NorthstarDedicatedTest/memalloc.h
@@ -1,6 +1,44 @@
#pragma once
+#include "include/rapidjson/document.h"
+//#include "include/rapidjson/allocators.h"
+
extern size_t g_iStaticAllocated;
+extern "C" {
+ char* _strdup_base(const char* src);
+}
+
void* operator new(size_t n);
-void operator delete(void* p); \ No newline at end of file
+void operator delete(void* p);
+
+void* _malloc_base(size_t n);
+//void* malloc(size_t n);
+
+class SourceAllocator {
+public:
+ static const bool kNeedFree = true;
+ void* Malloc(size_t size) {
+ if (size) // behavior of malloc(0) is implementation defined.
+ return _malloc_base(size);
+ else
+ return NULL; // standardize to returning NULL.
+ }
+ void* Realloc(void* originalPtr, size_t originalSize, size_t newSize) {
+ (void)originalSize;
+ if (newSize == 0) {
+ _free_base(originalPtr);
+ return NULL;
+ }
+ return _realloc_base(originalPtr, newSize);
+ }
+ static void Free(void* ptr) { _free_base(ptr); }
+};
+
+extern SourceAllocator* g_SourceAllocator;
+
+typedef rapidjson::GenericDocument<rapidjson::UTF8<>, rapidjson::MemoryPoolAllocator<SourceAllocator>, SourceAllocator> rapidjson_document;
+//typedef rapidjson::GenericDocument<rapidjson::UTF8<>, SourceAllocator, SourceAllocator> rapidjson_document;
+//typedef rapidjson::Document rapidjson_document;
+//using MyDocument = rapidjson::GenericDocument<rapidjson::UTF8<>, MemoryAllocator>;
+//using rapidjson_document = rapidjson::GenericDocument<rapidjson::UTF8<>, SourceAllocator, SourceAllocator>;