Namespaces
Variants

Memory management library

From cppreference.net
Memory management library
( exposition only* )
Allocators
Uninitialized memory algorithms
Constrained uninitialized memory algorithms
Memory resources
Uninitialized storage (until C++20)
( until C++20* )
( until C++20* )
( until C++20* )

Garbage collector support (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)

목차

스마트 포인터 (since C++11)

스마트 포인터는 자동적이고 예외 안전한 객체 수명 관리를 가능하게 합니다.

헤더 파일에 정의됨 <memory>
포인터 카테고리
(C++11)
고유 객체 소유권 의미론을 가진 스마트 포인터
(클래스 템플릿)
(C++11)
공유 객체 소유권 의미론을 가진 스마트 포인터
(클래스 템플릿)
(C++11)
std::shared_ptr 이 관리하는 객체에 대한 약한 참조
(클래스 템플릿)
(C++11에서 사용 중단됨) (C++17에서 제거됨)
엄격한 객체 소유권 의미론을 가진 스마트 포인터
(클래스 템플릿)
도우미 클래스
(C++11)
shared 및 weak 포인터에 대한 혼합 타입 소유자 기반 정렬 제공
(클래스 템플릿)
(C++26)
shared 및 weak 포인터에 대한 소유자 기반 해싱 제공
(클래스)
shared 및 weak 포인터에 대한 혼합 타입 소유자 기반 동등 비교 제공
(클래스)
객체가 자신을 참조하는 shared_ptr 을 생성할 수 있도록 함
(클래스 템플릿)
이미 파괴된 객체를 참조하는 weak_ptr 에 접근할 때 발생하는 예외
(클래스)
unique_ptr 을 위한 기본 삭제자
(클래스 템플릿)
스마트 포인터 어댑터 (C++23 이후)
(C++23)
외부 포인터 설정자와 상호 운용하며 소멸 시 스마트 포인터를 재설정함
(클래스 템플릿)
(C++23)
연관된 스마트 포인터와 재설정 인자를 가진 out_ptr_t 생성
(함수 템플릿)
외부 포인터 설정자와 상호 운용하며, 초기 포인터 값을 스마트 포인터에서 얻고 소멸 시 재설정함
(클래스 템플릿)
(C++23)
연관된 스마트 포인터와 재설정 인자를 가진 inout_ptr_t 생성
(함수 템플릿)

할당자

Allocator는 메모리 할당 전략을 캡슐화하는 클래스 템플릿입니다. 이를 통해 일반화된 컨테이너들이 메모리 관리를 데이터 자체로부터 분리할 수 있습니다.

헤더에 정의됨 <memory>
기본 할당자
(클래스 템플릿)
할당자 타입에 대한 정보를 제공함
(클래스 템플릿)
allocate_at_least 에 의해 할당된 저장 공간의 주소와 실제 크기를 기록함
(클래스 템플릿)
할당자 인식 생성자를 선택하는 데 사용되는 태그
(태그)
지정된 타입이 uses-allocator 생성 방식을 지원하는지 확인함
(클래스 템플릿)
주어진 타입이 요구하는 uses-allocator 생성 방식에 맞는 인수 목록을 준비함
(함수 템플릿)
uses-allocator 생성 방식을 통해 주어진 타입의 객체를 생성함
(함수 템플릿)
uses-allocator 생성 방식을 통해 지정된 메모리 위치에 주어진 타입의 객체를 생성함
(함수 템플릿)
헤더에 정의됨 <scoped_allocator>
다중 수준 컨테이너를 위한 다중 수준 할당자를 구현함
(클래스 템플릿)
헤더에 정의됨 <memory_resource>
네임스페이스에 정의됨 std::pmr
생성 시 사용된 std::pmr::memory_resource 기반으로 런타임 다형성을 지원하는 할당자
(클래스 템플릿)

메모리 리소스 (since C++17)

메모리 리소스는 std::pmr::polymorphic_allocator 에서 사용할 수 있는 메모리 할당 전략을 구현합니다.

헤더에 정의됨 <memory_resource>
네임스페이스에 정의됨 std::pmr
메모리 리소스를 캡슐화하는 클래스들을 위한 추상 인터페이스
(클래스)
전역 std::pmr::memory_resource 를 사용하여 메모리를 할당하고 해제하는 정적 프로그램 전체 operator new operator delete 를 반환함
(함수)
할당을 수행하지 않는 정적 std::pmr::memory_resource 를 반환함
(함수)
기본 std::pmr::memory_resource 를 가져옴
(함수)
기본 std::pmr::memory_resource 를 설정함
(함수)
풀 리소스들을 위한 생성자 옵션들의 집합
(클래스)
서로 다른 블록 크기들의 풀들에서 할당들을 관리하기 위한 스레드 안전한 std::pmr::memory_resource
(클래스)
서로 다른 블록 크기들의 풀들에서 할당들을 관리하기 위한 스레드 안전하지 않은 std::pmr::memory_resource
(클래스)
할당된 메모리를 리소스가 파괴될 때만 해제하는 특수 목적의 std::pmr::memory_resource
(클래스)

초기화되지 않은 메모리 알고리즘

헤더 파일에 정의됨 <memory>
객체 범위를 초기화되지 않은 메모리 영역에 복사합니다
(함수 템플릿)
여러 개의 객체를 초기화되지 않은 메모리 영역에 복사합니다
(함수 템플릿)
객체를 범위로 정의된 초기화되지 않은 메모리 영역에 복사합니다
(함수 템플릿)
객체를 시작점과 개수로 정의된 초기화되지 않은 메모리 영역에 복사합니다
(함수 템플릿)
객체 범위를 초기화되지 않은 메모리 영역으로 이동합니다
(함수 템플릿)
여러 개의 객체를 초기화되지 않은 메모리 영역으로 이동합니다
(함수 템플릿)
범위로 정의된 초기화되지 않은 메모리 영역에서 기본 초기화 로 객체를 생성합니다
(함수 템플릿)
시작점과 개수로 정의된 초기화되지 않은 메모리 영역에서 기본 초기화 로 객체를 생성합니다
(함수 템플릿)
범위로 정의된 초기화되지 않은 메모리 영역에서 값 초기화 로 객체를 생성합니다
(함수 템플릿)
시작점과 개수로 정의된 초기화되지 않은 메모리 영역에서 값 초기화 로 객체를 생성합니다
(함수 템플릿)
(C++17)
주어진 주소의 객체를 파괴합니다
(함수 템플릿)
(C++17)
객체 범위를 파괴합니다
(함수 템플릿)
(C++17)
범위 내의 여러 개의 객체를 파괴합니다
(함수 템플릿)
주어진 주소에 객체를 생성합니다
(함수 템플릿)

제약된 초기화되지 않은 메모리 알고리즘 (since C++20)

C++20는 constrained 초기화되지 않은 메모리 알고리즘을 제공하며, 이는 범위 인수나 iterator-sentinel 쌍을 수용합니다.

헤더에 정의됨 <memory>
네임스페이스에 정의됨 std::ranges
반복자, 센티널 및 범위에 대한 일부 연산이 예외를 발생시키지 않음을 지정함
( 설명 전용 개념* )
객체 범위를 초기화되지 않은 메모리 영역에 복사함
(알고리즘 함수 객체)
여러 객체를 초기화되지 않은 메모리 영역에 복사함
(알고리즘 함수 객체)
객체를 범위로 정의된 초기화되지 않은 메모리 영역에 복사함
(알고리즘 함수 객체)
객체를 시작점과 개수로 정의된 초기화되지 않은 메모리 영역에 복사함
(알고리즘 함수 객체)
객체 범위를 초기화되지 않은 메모리 영역으로 이동함
(알고리즘 함수 객체)
여러 객체를 초기화되지 않은 메모리 영역으로 이동함
(알고리즘 함수 객체)
범위로 정의된 초기화되지 않은 메모리 영역에서 기본 초기화 로 객체를 생성함
(알고리즘 함수 객체)
시작점과 개수로 정의된 초기화되지 않은 메모리 영역에서 기본 초기화 로 객체를 생성함
(알고리즘 함수 객체)
범위로 정의된 초기화되지 않은 메모리 영역에서 값 초기화 로 객체를 생성함
(알고리즘 함수 객체)
시작점과 개수로 정의된 초기화되지 않은 메모리 영역에서 값 초기화 로 객체를 생성함
(알고리즘 함수 객체)
주어진 주소의 객체를 파괴함
(알고리즘 함수 객체)
객체 범위를 파괴함
(알고리즘 함수 객체)
범위 내 여러 객체를 파괴함
(알고리즘 함수 객체)
주어진 주소에 객체를 생성함
(알고리즘 함수 객체)

명시적 수명 관리 (since C++23)

헤더 파일에 정의됨 <memory>
주어진 저장 공간에서 객체 표현을 재사용하여 객체를 암시적으로 생성함
(함수 템플릿)

복합 클래스 설계를 위한 타입 (since C++26)

헤더 파일에 정의됨 <memory>
(C++26)
값 의미론을 가진 동적으로 할당된 객체를 포함하는 래퍼
(클래스 템플릿)
값 의미론을 가진 동적으로 할당된 객체를 포함하는 다형적 래퍼
(클래스 템플릿)

기타

헤더 파일에 정의됨 <memory>
포인터와 유사한 타입에 대한 정보를 제공함
(클래스 템플릿)
(C++20)
포인터와 유사한 타입에서 원시 포인터를 얻음
(함수 템플릿)
(C++11)
& 연산자가 오버로드된 경우에도 객체의 실제 주소를 얻음
(함수 템플릿)
(C++11)
버퍼에서 포인터를 정렬함
(함수)
컴파일러에게 포인터가 정렬되었음을 알림
(함수 템플릿)
포인터가 최소 주어진 값만큼 정렬된 객체를 가리키는지 확인함
(함수 템플릿)

저수준 메모리 관리

예를 들어 다음을 포함합니다: operator new , operator delete , std::set_new_handler .

헤더 파일에 정의됨 <new>

C-스타일 메모리 관리

예를 들어 다음을 포함합니다 std::malloc , std::free .

헤더 파일에 정의됨 <cstdlib>

초기화되지 않은 스토리지 (until C++20)

원시 저장소를 생성하고 접근하기 위한 여러 유틸리티가 제공됩니다.

정의된 헤더 <memory>
(C++17에서 사용 중단됨) (C++20에서 제거됨)
표준 알고리즘이 초기화되지 않은 메모리에 결과를 저장할 수 있게 하는 반복자
(클래스 템플릿)
(C++17에서 사용 중단됨) (C++20에서 제거됨)
초기화되지 않은 저장 공간을 획득함
(함수 템플릿)
(C++17에서 사용 중단됨) (C++20에서 제거됨)
초기화되지 않은 저장 공간을 해제함
(함수 템플릿)

가비지 컬렉터 지원 (C++23까지)

헤더 파일에 정의됨 <memory>
(C++11) (C++23에서 제거됨)
객체가 회수되지 않도록 선언함
(함수)
(C++11) (C++23에서 제거됨)
객체가 회수될 수 있도록 선언함
(함수 템플릿)
(C++11) (C++23에서 제거됨)
메모리 영역에 추적 가능한 포인터가 포함되지 않음을 선언함
(함수)
(C++11) (C++23에서 제거됨)
std::declare_no_pointers 의 효과를 취소함
(함수)
(C++11) (C++23에서 제거됨)
포인터 안전성 모델들을 나열함
(열거형)
(C++11) (C++23에서 제거됨)
현재 포인터 안전성 모델을 반환함
(함수)