Memory management library
목차 |
스마트 포인터 (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 포인터에 대한 소유자 기반 해싱 제공
(클래스) |
|
(C++26)
|
shared 및 weak 포인터에 대한 혼합 타입 소유자 기반 동등 비교 제공
(클래스) |
|
(C++11)
|
객체가 자신을 참조하는
shared_ptr
을 생성할 수 있도록 함
(클래스 템플릿) |
|
(C++11)
|
이미 파괴된 객체를 참조하는
weak_ptr
에 접근할 때 발생하는 예외
(클래스) |
|
(C++11)
|
unique_ptr
을 위한 기본 삭제자
(클래스 템플릿) |
스마트 포인터 어댑터 (C++23 이후) |
|
|
(C++23)
|
외부 포인터 설정자와 상호 운용하며 소멸 시 스마트 포인터를 재설정함
(클래스 템플릿) |
|
(C++23)
|
연관된 스마트 포인터와 재설정 인자를 가진
out_ptr_t
생성
(함수 템플릿) |
|
(C++23)
|
외부 포인터 설정자와 상호 운용하며, 초기 포인터 값을 스마트 포인터에서 얻고 소멸 시 재설정함
(클래스 템플릿) |
|
(C++23)
|
연관된 스마트 포인터와 재설정 인자를 가진
inout_ptr_t
생성
(함수 템플릿) |
할당자
Allocator는 메모리 할당 전략을 캡슐화하는 클래스 템플릿입니다. 이를 통해 일반화된 컨테이너들이 메모리 관리를 데이터 자체로부터 분리할 수 있습니다.
|
헤더에 정의됨
<memory>
|
|
|
기본 할당자
(클래스 템플릿) |
|
|
(C++11)
|
할당자 타입에 대한 정보를 제공함
(클래스 템플릿) |
|
(C++23)
|
allocate_at_least
에 의해 할당된 저장 공간의 주소와 실제 크기를 기록함
(클래스 템플릿) |
|
(C++11)
|
할당자 인식 생성자를 선택하는 데 사용되는 태그
(태그) |
|
(C++11)
|
지정된 타입이 uses-allocator 생성 방식을 지원하는지 확인함
(클래스 템플릿) |
|
(C++20)
|
주어진 타입이 요구하는 uses-allocator 생성 방식에 맞는 인수 목록을 준비함
(함수 템플릿) |
|
(C++20)
|
uses-allocator 생성 방식을 통해 주어진 타입의 객체를 생성함
(함수 템플릿) |
|
uses-allocator 생성 방식을 통해 지정된 메모리 위치에 주어진 타입의 객체를 생성함
(함수 템플릿) |
|
|
헤더에 정의됨
<scoped_allocator>
|
|
|
(C++11)
|
다중 수준 컨테이너를 위한 다중 수준 할당자를 구현함
(클래스 템플릿) |
|
헤더에 정의됨
<memory_resource>
|
|
|
네임스페이스에 정의됨
std::pmr
|
|
|
(C++17)
|
생성 시 사용된
std::pmr::memory_resource
기반으로 런타임 다형성을 지원하는 할당자
(클래스 템플릿) |
메모리 리소스 (since C++17)
메모리 리소스는 std::pmr::polymorphic_allocator 에서 사용할 수 있는 메모리 할당 전략을 구현합니다.
|
헤더에 정의됨
<memory_resource>
|
|
|
네임스페이스에 정의됨
std::pmr
|
|
|
(C++17)
|
메모리 리소스를 캡슐화하는 클래스들을 위한 추상 인터페이스
(클래스) |
|
(C++17)
|
전역
std::pmr::memory_resource
를 사용하여 메모리를 할당하고 해제하는 정적 프로그램 전체
operator new
및
operator delete
를 반환함
(함수) |
|
(C++17)
|
할당을 수행하지 않는 정적
std::pmr::memory_resource
를 반환함
(함수) |
|
(C++17)
|
기본
std::pmr::memory_resource
를 가져옴
(함수) |
|
(C++17)
|
기본
std::pmr::memory_resource
를 설정함
(함수) |
|
(C++17)
|
풀 리소스들을 위한 생성자 옵션들의 집합
(클래스) |
|
(C++17)
|
서로 다른 블록 크기들의 풀들에서 할당들을 관리하기 위한 스레드 안전한
std::pmr::memory_resource
(클래스) |
|
(C++17)
|
서로 다른 블록 크기들의 풀들에서 할당들을 관리하기 위한 스레드 안전하지 않은
std::pmr::memory_resource
(클래스) |
|
(C++17)
|
할당된 메모리를 리소스가 파괴될 때만 해제하는 특수 목적의
std::pmr::memory_resource
(클래스) |
초기화되지 않은 메모리 알고리즘
|
헤더 파일에 정의됨
<memory>
|
|
|
객체 범위를 초기화되지 않은 메모리 영역에 복사합니다
(함수 템플릿) |
|
|
(C++11)
|
여러 개의 객체를 초기화되지 않은 메모리 영역에 복사합니다
(함수 템플릿) |
|
객체를 범위로 정의된 초기화되지 않은 메모리 영역에 복사합니다
(함수 템플릿) |
|
|
객체를 시작점과 개수로 정의된 초기화되지 않은 메모리 영역에 복사합니다
(함수 템플릿) |
|
|
(C++17)
|
객체 범위를 초기화되지 않은 메모리 영역으로 이동합니다
(함수 템플릿) |
|
(C++17)
|
여러 개의 객체를 초기화되지 않은 메모리 영역으로 이동합니다
(함수 템플릿) |
|
(C++17)
|
범위로 정의된 초기화되지 않은 메모리 영역에서
기본 초기화
로 객체를 생성합니다
(함수 템플릿) |
|
시작점과 개수로 정의된 초기화되지 않은 메모리 영역에서
기본 초기화
로 객체를 생성합니다
(함수 템플릿) |
|
|
(C++17)
|
범위로 정의된 초기화되지 않은 메모리 영역에서
값 초기화
로 객체를 생성합니다
(함수 템플릿) |
|
(C++17)
|
시작점과 개수로 정의된 초기화되지 않은 메모리 영역에서
값 초기화
로 객체를 생성합니다
(함수 템플릿) |
|
(C++17)
|
주어진 주소의 객체를 파괴합니다
(함수 템플릿) |
|
(C++17)
|
객체 범위를 파괴합니다
(함수 템플릿) |
|
(C++17)
|
범위 내의 여러 개의 객체를 파괴합니다
(함수 템플릿) |
|
(C++20)
|
주어진 주소에 객체를 생성합니다
(함수 템플릿) |
제약된 초기화되지 않은 메모리 알고리즘 (since C++20)
C++20는 constrained 초기화되지 않은 메모리 알고리즘을 제공하며, 이는 범위 인수나 iterator-sentinel 쌍을 수용합니다.
|
헤더에 정의됨
<memory>
|
|
|
네임스페이스에 정의됨
std::ranges
|
|
|
반복자, 센티널 및 범위에 대한 일부 연산이 예외를 발생시키지 않음을 지정함
( 설명 전용 개념* ) |
|
|
(C++20)
|
객체 범위를 초기화되지 않은 메모리 영역에 복사함
(알고리즘 함수 객체) |
|
(C++20)
|
여러 객체를 초기화되지 않은 메모리 영역에 복사함
(알고리즘 함수 객체) |
|
(C++20)
|
객체를 범위로 정의된 초기화되지 않은 메모리 영역에 복사함
(알고리즘 함수 객체) |
|
(C++20)
|
객체를 시작점과 개수로 정의된 초기화되지 않은 메모리 영역에 복사함
(알고리즘 함수 객체) |
|
(C++20)
|
객체 범위를 초기화되지 않은 메모리 영역으로 이동함
(알고리즘 함수 객체) |
|
(C++20)
|
여러 객체를 초기화되지 않은 메모리 영역으로 이동함
(알고리즘 함수 객체) |
|
범위로 정의된 초기화되지 않은 메모리 영역에서
기본 초기화
로 객체를 생성함
(알고리즘 함수 객체) |
|
|
시작점과 개수로 정의된 초기화되지 않은 메모리 영역에서
기본 초기화
로 객체를 생성함
(알고리즘 함수 객체) |
|
|
범위로 정의된 초기화되지 않은 메모리 영역에서
값 초기화
로 객체를 생성함
(알고리즘 함수 객체) |
|
|
시작점과 개수로 정의된 초기화되지 않은 메모리 영역에서
값 초기화
로 객체를 생성함
(알고리즘 함수 객체) |
|
|
(C++20)
|
주어진 주소의 객체를 파괴함
(알고리즘 함수 객체) |
|
(C++20)
|
객체 범위를 파괴함
(알고리즘 함수 객체) |
|
(C++20)
|
범위 내 여러 객체를 파괴함
(알고리즘 함수 객체) |
|
(C++20)
|
주어진 주소에 객체를 생성함
(알고리즘 함수 객체) |
명시적 수명 관리 (since C++23)
|
헤더 파일에 정의됨
<memory>
|
|
|
주어진 저장 공간에서 객체 표현을 재사용하여 객체를 암시적으로 생성함
(함수 템플릿) |
|
복합 클래스 설계를 위한 타입 (since C++26)
|
헤더 파일에 정의됨
<memory>
|
|
|
(C++26)
|
값 의미론을 가진 동적으로 할당된 객체를 포함하는 래퍼
(클래스 템플릿) |
|
(C++26)
|
값 의미론을 가진 동적으로 할당된 객체를 포함하는 다형적 래퍼
(클래스 템플릿) |
기타
|
헤더 파일에 정의됨
<memory>
|
|
|
(C++11)
|
포인터와 유사한 타입에 대한 정보를 제공함
(클래스 템플릿) |
|
(C++20)
|
포인터와 유사한 타입에서 원시 포인터를 얻음
(함수 템플릿) |
|
(C++11)
|
&
연산자가 오버로드된 경우에도 객체의 실제 주소를 얻음
(함수 템플릿) |
|
(C++11)
|
버퍼에서 포인터를 정렬함
(함수) |
|
(C++20)
|
컴파일러에게 포인터가 정렬되었음을 알림
(함수 템플릿) |
|
(C++26)
|
포인터가 최소 주어진 값만큼 정렬된 객체를 가리키는지 확인함
(함수 템플릿) |
저수준 메모리 관리
예를 들어 다음을 포함합니다: 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에서 제거됨)
|
현재 포인터 안전성 모델을 반환함
(함수) |