According to the wiki: โBy default, the allocator uses the new operator to allocate memory [13]. This is often implemented as a thin layer around the heap allocation functions C, [14], which are usually optimized for infrequently allocating large blocks of memoryโ
from "ISO / IEC (2003). ISO / IEC 14882: 2003 (E): Programming Languages โโ- C ++" (wiki link)
Default Allocator:
namespace std { template <class T> class allocator; // specialize for void: template <> class allocator<void> { public: typedef void* pointer; typedef const void* const_pointer; // reference-to-void members are impossible. typedef void value_type; template <class U> struct rebind { typedef allocator<U> other; }; }; template <class T> class allocator { public: typedef size_t size_type; typedef ptrdiff_t difference_type; typedef T* pointer; typedef const T* const_pointer; typedef T& reference; typedef const T& const_reference; typedef T template value_type; template <class U> struct rebind { typedef allocator<U> other; }; allocator() throw(); allocator(const allocator&) throw(); template <class U> allocator(const allocator<U>&) throw(); ฬallocator() throw(); pointer address(reference x) const; const_pointer address(const_reference x) const;` pointer allocate( size_type, allocator<void>::const_pointer hint = 0); void deallocate(pointer p, size_type n); size_type max_size() const throw(); void construct(pointer p, const T& val); void destroy(pointer p); }; }
source share