Memory
Utilities
Collaboration diagram for Memory:

## Topics

| Allocators
| Pointer Abstractions
| Pointer Safety and Garbage Collection

## Files

file | memory

## Macros

#define | __cpp_lib_raw_memory_algorithms

## 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<typename _InputIterator, typename _ForwardIterator>
_ForwardIterator | std::uninitialized_copy (_InputIterator __first, _InputIterator __last, _ForwardIterator __result)
template<typename _InputIterator, typename _Size, typename _ForwardIterator>
_ForwardIterator | std::uninitialized_copy_n (_InputIterator __first, _Size __n, _ForwardIterator __result)
template<typename _ForwardIterator>
void | std::uninitialized_default_construct (_ForwardIterator __first, _ForwardIterator __last)
template<typename _ForwardIterator, typename _Size>
_ForwardIterator | std::uninitialized_default_construct_n (_ForwardIterator __first, _Size __count)
template<typename _ForwardIterator, typename _Tp>
void | std::uninitialized_fill (_ForwardIterator __first, _ForwardIterator __last, const _Tp &__x)
template<typename _ForwardIterator, typename _Size, typename _Tp>
_ForwardIterator | std::uninitialized_fill_n (_ForwardIterator __first, _Size __n, const _Tp &__x)
template<typename _InputIterator, typename _ForwardIterator>
_ForwardIterator | std::uninitialized_move (_InputIterator __first, _InputIterator __last, _ForwardIterator __result)
template<typename _InputIterator, typename _Size, typename _ForwardIterator>
pair< _InputIterator, _ForwardIterator > | std::uninitialized_move_n (_InputIterator __first, _Size __count, _ForwardIterator __result)
template<typename _ForwardIterator>
void | std::uninitialized_value_construct (_ForwardIterator __first, _ForwardIterator __last)
template<typename _ForwardIterator, typename _Size>
_ForwardIterator | std::uninitialized_value_construct_n (_ForwardIterator __first, _Size __count)

## Detailed Description

Components for memory allocation, deallocation, and management.

## Macro Definition Documentation

## __cpp_lib_raw_memory_algorithms

#define __cpp_lib_raw_memory_algorithms

Definition at line 960 of file stl_uninitialized.h.

## Function Documentation

## align()

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

inline noexcept

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 62 of file align.h.

## assume_aligned()

template<size_t _Align, class _Tp>

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

nodiscard constexpr noexcept

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 93 of file align.h.

References has_single_bit(), and is_constant_evaluated().

## uninitialized_copy()

template<typename _InputIterator, typename _ForwardIterator>

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

inline

Copies the range [first,last) into result.

Parameters

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

Returns
  __result + (__first - __last)

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

Definition at line 163 of file stl_uninitialized.h.

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 )

inline

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 941 of file stl_uninitialized.h.

References __iterator_category().

## uninitialized_default_construct()

template<typename _ForwardIterator>

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

inline

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

Parameters

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

Since
  C++17

Definition at line 970 of file stl_uninitialized.h.

## uninitialized_default_construct_n()

template<typename _ForwardIterator, typename _Size>

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

inline

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 985 of file stl_uninitialized.h.

## uninitialized_fill()

template<typename _ForwardIterator, typename _Tp>

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

inline

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

Parameters

  __first | An input iterator.
  __last | An input iterator.
  __x | The source value.

Returns
  Nothing.

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

Definition at line 241 of file stl_uninitialized.h.

## uninitialized_fill_n()

template<typename _ForwardIterator, typename _Size, typename _Tp>

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

inline

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

Parameters

  __first | An input iterator.
  __n | The number of copies to make.
  __x | The source value.

Returns
  Nothing.

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

Definition at line 312 of file stl_uninitialized.h.

## uninitialized_move()

template<typename _InputIterator, typename _ForwardIterator>

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

inline

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 1028 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 )

inline

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 1046 of file stl_uninitialized.h.

## uninitialized_value_construct()

template<typename _ForwardIterator>

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

inline

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

Parameters

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

Since
  C++17

Definition at line 998 of file stl_uninitialized.h.

## uninitialized_value_construct_n()

template<typename _ForwardIterator, typename _Size>

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

inline

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 1013 of file stl_uninitialized.h.