1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- /*
- Copyright 2014 Glen Joseph Fernandes
- ([email protected])
- Distributed under the Boost Software License, Version 1.0.
- (http://www.boost.org/LICENSE_1_0.txt)
- */
- #ifndef BOOST_ALIGN_DETAIL_ALIGNED_ALLOC_MACOS_HPP
- #define BOOST_ALIGN_DETAIL_ALIGNED_ALLOC_MACOS_HPP
- #include <boost/align/detail/is_alignment.hpp>
- #include <boost/assert.hpp>
- #include <stdlib.h>
- 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 (size == 0) {
- return 0;
- }
- if (alignment < sizeof(void*)) {
- alignment = sizeof(void*);
- }
- void* p;
- if (::posix_memalign(&p, alignment, size) != 0) {
- p = 0;
- }
- return p;
- }
- inline void
- aligned_free(void* ptr) BOOST_NOEXCEPT
- {
- ::free(ptr);
- }
- } /* alignment */
- } /* boost */
- #endif
|