libstdc++: Memory

libstdc++

Memory
Utilities
Collaboration diagram for Memory:

## Topics
| Allocators
| Pointer Abstractions
| Polymorphic memory resources

## Files
file | memory

## Functions
void * | std::align (size_t __align, size_t __size, void *&__ptr, size_t &__space) noexcept
template<size_t _Align, class _Tp>
constexpr _Tp * | std::assume_aligned (_Tp *__ptr) noexcept
template<size_t _Align, class _Tp>
bool | std::is_sufficiently_aligned (_Tp *__ptr)
template<typename _InputIterator, typename _ForwardIterator>
constexpr _ForwardIterator | std::uninitialized_copy (_InputIterator __first, _InputIterator __last, _ForwardIterator __result)
template<typename _InputIterator, typename _Size, typename _ForwardIterator>
constexpr _ForwardIterator | std::uninitialized_copy_n (_InputIterator __first, _Size __n, _ForwardIterator __result)
template<typename _ForwardIterator>
constexpr void | std::uninitialized_default_construct (_ForwardIterator __first, _ForwardIterator __last)
template<typename _ForwardIterator, typename _Size>
constexpr _ForwardIterator | std::uninitialized_default_construct_n (_ForwardIterator __first, _Size __count)
template<typename _ForwardIterator, typename _Tp = typename iterator_traits<_ForwardIterator>::value_type>
constexpr void | std::uninitialized_fill (_ForwardIterator __first, _ForwardIterator __last, const _Tp &__x)
template<typename _ForwardIterator, typename _Size, typename _Tp = typename iterator_traits<_ForwardIterator>::value_type>
constexpr _ForwardIterator | std::uninitialized_fill_n (_ForwardIterator __first, _Size __n, const _Tp &__x)
template<typename _InputIterator, typename _ForwardIterator>
constexpr _ForwardIterator | std::uninitialized_move (_InputIterator __first, _InputIterator __last, _ForwardIterator __result)
template<typename _InputIterator, typename _Size, typename _ForwardIterator>
constexpr pair< _InputIterator, _ForwardIterator > | std::uninitialized_move_n (_InputIterator __first, _Size __count, _ForwardIterator __result)
template<typename _ForwardIterator>
constexpr void | std::uninitialized_value_construct (_ForwardIterator __first, _ForwardIterator __last)
template<typename _ForwardIterator, typename _Size>
constexpr _ForwardIterator | std::uninitialized_value_construct_n (_ForwardIterator __first, _Size __count)

## Detailed Description

Components for memory allocation, deallocation, and management.

## Function Documentation

## ◆ align()

void * std::align | ( | size_t | __align,
|  | size_t | __size,
|  | void *& | __ptr,
|  | size_t & | __space )
| inlinenoexcept

Fit aligned storage in buffer.

This function tries to fit __size bytes of storage with alignment __align into the buffer __ptr of size __space bytes. If such a buffer fits then __ptr is changed to point to the first byte of the aligned storage and __space is reduced by the bytes used for alignment.

C++11 20.6.5 [ptr.align]

Parameters

  __align | A fundamental or extended alignment value.
  __size | Size of the aligned storage required.
  __ptr | Pointer to a buffer of __space bytes.
  __space | Size of the buffer pointed to by __ptr.

Returns
  the updated pointer if the aligned storage fits, otherwise nullptr.

Definition at line 60 of file align.h.

## ◆ assume_aligned()

template<size_t _Align, class _Tp>

_Tp * std::assume_aligned | ( | _Tp * | __ptr | ) |
| nodiscardconstexprnoexcept

Inform the compiler that a pointer is aligned.

Template Parameters

  _Align | An alignment value (i.e. a power of two)
  _Tp | An object type

Parameters

  __ptr | A pointer that is aligned to _Align

C++20 20.10.6 [ptr.align]

Definition at line 90 of file align.h.

## ◆ is_sufficiently_aligned()

template<size_t _Align, class _Tp>

bool std::is_sufficiently_aligned | ( | _Tp * | __ptr | ) |
| inlinenodiscard

Is __ptr aligned to an _Align byte boundary?

Template Parameters

  _Align | An alignment value
  _Tp | An object type

C++26 20.2.5 [ptr.align]

Definition at line 118 of file align.h.

## ◆ uninitialized_copy()

template<typename _InputIterator, typename _ForwardIterator>

_ForwardIterator std::uninitialized_copy | ( | _InputIterator | __first,
|  | _InputIterator | __last,
|  | _ForwardIterator | __result )
| inlineconstexpr

Copies the range [first,last) into result.

Parameters

  __first | An input iterator.
  __last | An input iterator.
  __result | A forward iterator.

Returns
  __result + (__last - __first)

Like std::copy, but does not require an initialized output range.

Definition at line 252 of file stl_uninitialized.h.

References to_address().

Referenced by __gnu_parallel::parallel_sort_mwms_pu(), and uninitialized_move().

## ◆ uninitialized_copy_n()

template<typename _InputIterator, typename _Size, typename _ForwardIterator>

_ForwardIterator std::uninitialized_copy_n | ( | _InputIterator | __first,
|  | _Size | __n,
|  | _ForwardIterator | __result )
| inlineconstexpr

Copies the range [first,first+n) into result.

Parameters

  __first | An input iterator.
  __n | The number of elements to copy.
  __result | An output iterator.

Returns
  __result + __n

Since
  C++11

Like copy_n(), but does not require an initialized output range.

Definition at line 1205 of file stl_uninitialized.h.

## ◆ uninitialized_default_construct()

template<typename _ForwardIterator>

void std::uninitialized_default_construct | ( | _ForwardIterator | __first,
|  | _ForwardIterator | __last )
| inlineconstexpr

Default-initializes objects in the range [first,last).

Parameters

  __first | A forward iterator.
  __last | A forward iterator.

Since
  C++17

Definition at line 1234 of file stl_uninitialized.h.

## ◆ uninitialized_default_construct_n()

template<typename _ForwardIterator, typename _Size>

_ForwardIterator std::uninitialized_default_construct_n | ( | _ForwardIterator | __first,
|  | _Size | __count )
| inlineconstexpr

Default-initializes objects in the range [first,first+count).

Parameters

  __first | A forward iterator.
  __count | The number of objects to construct.

Returns
  __first + __count

Since
  C++17

Definition at line 1250 of file stl_uninitialized.h.

## ◆ uninitialized_fill()

template<typename _ForwardIterator, typename _Tp = typename iterator_traits<_ForwardIterator>::value_type>

void std::uninitialized_fill | ( | _ForwardIterator | __first,
|  | _ForwardIterator | __last,
|  | const _Tp & | __x )
| inlineconstexpr

Copies the value x into the range [first,last).

Parameters

  __first | A forward iterator.
  __last | A forward iterator.
  __x | The source value.

Like std::fill, but does not require an initialized output range.

Definition at line 413 of file stl_uninitialized.h.

References to_address().

## ◆ uninitialized_fill_n()

template<typename _ForwardIterator, typename _Size, typename _Tp = typename iterator_traits<_ForwardIterator>::value_type>

_ForwardIterator std::uninitialized_fill_n | ( | _ForwardIterator | __first,
|  | _Size | __n,
|  | const _Tp & | __x )
| inlineconstexpr

Copies the value x into the range [first,first+n).

Parameters

  __first | A forward iterator.
  __n | The number of copies to make.
  __x | The source value.

Returns
  __first + __n.

Like std::fill_n, but does not require an initialized output range.

Definition at line 550 of file stl_uninitialized.h.

References to_address().

## ◆ uninitialized_move()

template<typename _InputIterator, typename _ForwardIterator>

_ForwardIterator std::uninitialized_move | ( | _InputIterator | __first,
|  | _InputIterator | __last,
|  | _ForwardIterator | __result )
| inlineconstexpr

Move-construct from the range [first,last) into result.

Parameters

  __first | An input iterator.
  __last | An input iterator.
  __result | An output iterator.

Returns
  __result + (__first - __last)

Since
  C++17

Definition at line 1296 of file stl_uninitialized.h.

References uninitialized_copy().

## ◆ uninitialized_move_n()

template<typename _InputIterator, typename _Size, typename _ForwardIterator>

pair< _InputIterator, _ForwardIterator > std::uninitialized_move_n | ( | _InputIterator | __first,
|  | _Size | __count,
|  | _ForwardIterator | __result )
| inlineconstexpr

Move-construct from the range [first,first+count) into result.

Parameters

  __first | An input iterator.
  __count | The number of objects to initialize.
  __result | An output iterator.

Returns
  __result + __count

Since
  C++17

Definition at line 1315 of file stl_uninitialized.h.

## ◆ uninitialized_value_construct()

template<typename _ForwardIterator>

void std::uninitialized_value_construct | ( | _ForwardIterator | __first,
|  | _ForwardIterator | __last )
| inlineconstexpr

Value-initializes objects in the range [first,last).

Parameters

  __first | A forward iterator.
  __last | A forward iterator.

Since
  C++17

Definition at line 1264 of file stl_uninitialized.h.

## ◆ uninitialized_value_construct_n()

template<typename _ForwardIterator, typename _Size>

_ForwardIterator std::uninitialized_value_construct_n | ( | _ForwardIterator | __first,
|  | _Size | __count )
| inlineconstexpr

Value-initializes objects in the range [first,first+count).

Parameters

  __first | A forward iterator.
  __count | The number of objects to construct.

Returns
  __result + __count

Since
  C++17

Definition at line 1280 of file stl_uninitialized.h.