Memory allocation¶
aligned_allocate function¶
template <typename T = void, size_t alignment = 64>
T *aligned_allocate(size_t size = 1)
Allocates aligned memory
Source code
template <typename T = void, size_t alignment = 64>
CMT_INTRINSIC T* aligned_allocate(size_t size = 1)
{
    T* ptr = static_cast<T*>(CMT_ASSUME_ALIGNED(
        details::aligned_malloc(std::max(alignment, size * details::elementsize<T>()), alignment),
        alignment));
    return ptr;
}
https://github.com/kfrlib/kfr/blob//include/kfr/cometa/memory.hpp#L129
template <typename T = void>
T *aligned_allocate(size_t size, size_t alignment)
Allocates aligned memory
Source code
template <typename T = void>
CMT_INTRINSIC T* aligned_allocate(size_t size, size_t alignment)
{
    T* ptr = static_cast<T*>(CMT_ASSUME_ALIGNED(
        details::aligned_malloc(std::max(alignment, size * details::elementsize<T>()), alignment),
        alignment));
    return ptr;
}
https://github.com/kfrlib/kfr/blob//include/kfr/cometa/memory.hpp#L138
aligned_deallocate function¶
template <typename T = void> void aligned_deallocate(T *ptr)
Deallocates aligned memory
Source code
template <typename T = void>
CMT_INTRINSIC void aligned_deallocate(T* ptr)
{
    return details::aligned_free(ptr);
}
https://github.com/kfrlib/kfr/blob//include/kfr/cometa/memory.hpp#L148
data_allocator
data_allocator class¶
template <typename T> data_allocator
Aligned allocator
Source code
template <typename T>
struct data_allocator
{
    using value_type      = T;
    using pointer         = T*;
    using const_pointer   = const T*;
    using reference       = T&;
    using const_reference = const T&;
    using size_type       = std::size_t;
    using difference_type = std::ptrdiff_t;
    template <typename U>
    struct rebind
    {
        using other = data_allocator<U>;
    };
    constexpr data_allocator() CMT_NOEXCEPT                      = default;
    constexpr data_allocator(const data_allocator&) CMT_NOEXCEPT = default;
    template <typename U>
    constexpr data_allocator(const data_allocator<U>&) CMT_NOEXCEPT
    {
    }
    pointer allocate(size_type n) const
    {
        pointer result = aligned_allocate<value_type>(n);
        if (!result)
            CMT_THROW(std::bad_alloc());
        return result;
    }
    void deallocate(pointer p, size_type) { aligned_deallocate(p); }
}
https://github.com/kfrlib/kfr/blob//include/kfr/cometa/memory.hpp#L197
Auto-generated from sources, Revision , https://github.com/kfrlib/kfr/blob//include/kfr/