What is the default allocator used by GCC for STL?

According to this link, gcc provides many interesting memory allocators that will be used with STL containers, but which are used by default if I don't specify one when creating std :: list?

+4
source share
2 answers

As the page you link to says

The current default selection for the dispenser is __gnu_cxx :: new_allocator.

Ie, the default allocator is basically just operator new .

+6
source

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); }; } 
+3
source

All Articles