This is mostly targetted at leveldb_ which is rude and does not support custom allocatorscustom
parent
a87790a424
commit
2849399d54
@ -0,0 +1,29 @@ |
|||||||
|
/*
|
||||||
|
* Copyright 2023 jacqueline <me@jacqueline.id.au> |
||||||
|
* |
||||||
|
* SPDX-License-Identifier: GPL-3.0-only |
||||||
|
*/ |
||||||
|
|
||||||
|
#include <cstdint> |
||||||
|
|
||||||
|
#include "esp_heap_caps.h" |
||||||
|
|
||||||
|
void* operator new[](std::size_t sz) { |
||||||
|
if (sz == 0) { |
||||||
|
++sz; // avoid std::malloc(0) which may return nullptr on success
|
||||||
|
} |
||||||
|
|
||||||
|
if (sz > 256) { |
||||||
|
return heap_caps_malloc(sz, MALLOC_CAP_SPIRAM); |
||||||
|
} |
||||||
|
|
||||||
|
return heap_caps_malloc(sz, MALLOC_CAP_DEFAULT); |
||||||
|
} |
||||||
|
|
||||||
|
void operator delete[](void* ptr) noexcept { |
||||||
|
heap_caps_free(ptr); |
||||||
|
} |
||||||
|
|
||||||
|
void operator delete[](void* ptr, std::size_t size) noexcept { |
||||||
|
heap_caps_free(ptr); |
||||||
|
} |
Loading…
Reference in new issue