STL compatible C++ memory allocator library using a new RawAllocator concept that is similar to an Allocator but easier to use and write.
memory_pool_collection
properly. (#148)memory_block_stack::owns()
. (#151)Full Changelog: https://github.com/foonathan/memory/compare/v0.7-2...v0.7-3
Deprecate virtual_memory_page_size
; use get_virtual_memory_page_size()
instead. (#132)
CMake improvements:
CMAKE_RUNTIME_OUTPUT_DIRECTORY
properly to support shared libraries (#132)Just bugfixes:
memory_pool
(#113)memory_pool_collection
's array allocation (#99)memory_pool::min_block_size
(#110)BREAKING: Removed the use of the compatibility library to automatically generate macros and workaround for older compilers. The important compatibility workarounds like the __builtin_clz
extension are still used, but workarounds for missing C++11 library features have been removed. In particular, the library now requires compiler support for noexcept
, constexpr
, alignof
and thread_local
.This means that GCC 4.8 and Visual Studio version 12.0 (both released in 2013), are no longer supported.
BREAKING: Remove Mutex
support from allocator_reference
and consequently from std_allocator
, allocator_deleter
, etc. Embedding the Mutex
with the reference was fundamentally broken and unusable to ensure thread safety. Use a reference to a thread_safe_allocator
instead, which actually guarantees thread safety.
Add ability to query the minimal block size required by a memory_pool
or memory_stack
that should contain the given memory. Due to internal data structures and debug fences this is more than the naive memory request, so it can be computed now.
Various bug fixes, compiler warning workarounds and CMake improvements accumulated over past two years. Most notable changes:
fallback_allocator
is default constructible if statelessunique_base_ptr
to support a unique ptr to a base classallocate_unique
overloads that take a custom mutexsegregator
static_assert()
when default constructing a stateful std_allocator
See also: https://foonathan.github.io/blog/2016/11/21/memory-0.6.html
4_KiB
)make_block_allocator
temporary_allocator
: explicit separation into temporary_stack
, improved automatic creationmemory_stack_raii_unwind
for automatic unwindingiteration_allocator
shared_ptr_node_size
string
container typedeffallback_allocator
segregator
Fixes a few minor bugs in memory_stack
also the next_capacity()
functions so that they return the exact results.
Array allocations in memory_pool_collection
are improved and now supported for pool types that do not support them natively (small_node_pool
) also add _left()
to pool_capacity()
and capacity()
like in the other arenas.
Fixes a crash in memory_pool<array_pool>
that sometimes happens for array allocations.
Also fixes a non-critical performance bug in memory_pool<small_pool>
and a typo in Readme.
Drop-in replacement for version 0.5 that massively improves the performance.
See also: https://t.co/uh59UnpVVi