Mercurial > hg > vamp-build-and-test
view DEPENDENCIES/generic/include/boost/align/detail/aligned_alloc.hpp @ 133:4acb5d8d80b6 tip
Don't fail environmental check if README.md exists (but .txt and no-suffix don't)
author | Chris Cannam |
---|---|
date | Tue, 30 Jul 2019 12:25:44 +0100 |
parents | f46d142149f5 |
children |
line wrap: on
line source
/* (c) 2014 Glen Joseph Fernandes glenjofe at gmail dot com Distributed under the Boost Software License, Version 1.0. http://boost.org/LICENSE_1_0.txt */ #ifndef BOOST_ALIGN_DETAIL_ALIGNED_ALLOC_HPP #define BOOST_ALIGN_DETAIL_ALIGNED_ALLOC_HPP #include <boost/assert.hpp> #include <boost/config.hpp> #include <boost/align/align.hpp> #include <boost/align/alignment_of.hpp> #include <boost/align/detail/is_alignment.hpp> #include <cstdlib> namespace boost { namespace alignment { inline void* aligned_alloc(std::size_t alignment, std::size_t size) BOOST_NOEXCEPT { BOOST_ASSERT(detail::is_alignment(alignment)); if (alignment < alignment_of<void*>::value) { alignment = alignment_of<void*>::value; } std::size_t n = size + alignment - 1; void* p1 = 0; void* p2 = std::malloc(n + sizeof p1); if (p2) { p1 = static_cast<char*>(p2) + sizeof p1; (void)align(alignment, size, p1, n); *(static_cast<void**>(p1) - 1) = p2; } return p1; } inline void aligned_free(void* ptr) BOOST_NOEXCEPT { if (ptr) { void* p = *(static_cast<void**>(ptr) - 1); std::free(p); } } } } #endif