Standard library header <new>
From cppreference.net
이 헤더는 dynamic memory management 라이브러리의 일부이며, 특히 low level memory management 기능을 제공합니다.
클래스 |
||
|
메모리 할당이 실패할 때 발생하는 예외
(클래스) |
||
|
(C++11)
|
잘못된 길이의 배열 할당 시 발생하는 예외
(클래스) |
|
|
(C++17)
|
정렬 인식 할당 및 해제 함수에 정렬을 전달하는 데 사용되는 타입
(열거형) |
|
타입 |
||
|
new 핸들러의 함수 포인터 타입
(타입 정의) |
||
태그 |
||
|
비예외 발생
할당 함수
를 선택하는 데 사용되는 태그
(태그) |
||
|
operator delete
의 소멸 삭제 오버로드를 선택하는 데 사용되는 태그
(태그) |
||
상수 |
||
|
가짜 공유를 피하기 위한 최소 오프셋
진짜 공유를 촉진하기 위한 최대 오프셋 (상수) |
||
함수 |
||
|
할당 함수
(함수) |
||
|
해제 함수
(함수) |
||
|
(C++11)
|
현재 new 핸들러를 얻음
(함수) |
|
|
new 핸들러를 등록함
(함수) |
||
|
(C++17)
|
포인터 최적화 장벽
(함수 템플릿) |
|
시놉시스
// 모든 독립 실행형 namespace std { // 스토리지 할당 오류 class bad_alloc; class bad_array_new_length; struct destroying_delete_t { explicit destroying_delete_t() = default; }; inline constexpr destroying_delete_t destroying_delete{}; // 전역 operator new 제어 enum class align_val_t : size_t { }; struct nothrow_t { explicit nothrow_t() = default; }; extern const nothrow_t nothrow; using new_handler = void (*)(); new_handler get_new_handler() noexcept; new_handler set_new_handler(new_handler new_p) noexcept; // pointer optimization barrier template<class T> constexpr T* launder(T* p) noexcept; // hardware interference size inline constexpr size_t hardware_destructive_interference_size = /* 구현 정의 */; inline constexpr size_t hardware_constructive_interference_size = /* 구현 정의 */; } // 저장소 할당 및 해제 void* operator new(std::size_t size); void* operator new(std::size_t size, std::align_val_t alignment); void* operator new(std::size_t size, const std::nothrow_t&) noexcept; void* operator new(std::size_t size, std::align_val_t alignment, const std::nothrow_t&) noexcept; void operator delete(void* ptr) noexcept; void operator delete(void* ptr, std::size_t size) noexcept; void operator delete(void* ptr, std::align_val_t alignment) noexcept; void operator delete(void* ptr, std::size_t size, std::align_val_t alignment) noexcept; void operator delete(void* ptr, const std::nothrow_t&) noexcept; void operator delete(void* ptr, std::align_val_t alignment, const std::nothrow_t&) noexcept; void* operator new[](std::size_t size); void* operator new[](std::size_t size, std::align_val_t alignment); void* operator new[](std::size_t size, const std::nothrow_t&) noexcept; void* operator new[](std::size_t size, std::align_val_t alignment, const std::nothrow_t&) noexcept; void operator delete[](void* ptr) noexcept; void operator delete[](void* ptr, std::size_t size) noexcept; void operator delete[](void* ptr, std::align_val_t alignment) noexcept; void operator delete[](void* ptr, std::size_t size, std::align_val_t alignment) noexcept; void operator delete[](void* ptr, const std::nothrow_t&) noexcept; void operator delete[](void* ptr, std::align_val_t alignment, const std::nothrow_t&) noexcept; constexpr void* operator new(std::size_t size, void* ptr) noexcept; constexpr void* operator new[](std::size_t size, void* ptr) noexcept; void operator delete(void* ptr, void*) noexcept; void operator delete[](void* ptr, void*) noexcept;
클래스 std::bad_alloc
namespace std { class bad_alloc : public exception { public: // 특수 멤버 함수들의 명세에 대한 설명 참조 constexpr const char* what() const noexcept override; }; }
클래스 std::bad_array_new_length
namespace std { class bad_array_new_length : public bad_alloc { public: // 특수 멤버 함수들의 명세에 대한 설명 참조 constexpr const char* what() const noexcept override; }; }