== `sqlite/allocator.hpp` [#allocator] The sqlite allocator wraps sqlite's malloc & free functions in a similar way that std::allocator wraps `new`/`delete`. This can be used for sqlite-related code (e.g. vtables or custom functions) that should use memory from the sqlite3 pool. [source,cpp,subs=+quotes] ---- template struct allocator { constexpr allocator() noexcept {} constexpr allocator( const allocator& other ) noexcept {} template< class U > constexpr allocator( const allocator& other ) noexcept {} constexpr static std::size_t alignment = __implementation_defined__; static_assert(alignof(T) <= alignment, "T alignment can't be fulfilled by sqlite"); [[nodiscard]] T* allocate( std::size_t n ); // <1> void deallocate( T* p, std::size_t); // <2> }; ---- <1> Invokes `sqlite3_malloc64` and throws `std::bad_alloc` if it fails. <2> Invokes `sqlite3_free` NOTE: Sqlite provides extensive https://www.sqlite.org/malloc.html[customizability for its dynamic memory allocation].