gc_pointer_safety
gc_pointer_safety (std::pointer_safety)
<memory> 헤더에 정의되어 있어요. C++가 지원하는 포인터 안전성 모드를 나열하는 스코프 있는 열거형이에요. C++11부터 도입, C++23에서 제거됐어요.
출처: cppreference
본문
enum class pointer_safety {
relaxed,
preferred,
strict
};
(C++11부터, C++23에서 제거)
스코프 있는 열거형 pointer_safety는 C++가 지원하는 포인터 안전성 모드를 나열해요.
열거형 상수
| 열거자 | 의미 |
|---|---|
pointer_safety::strict |
안전하게 파생된 포인터(new로 할당된 객체 또는 그 하위 객체에 대한 포인터)만 역참조하거나 해제할 수 있어요. 가비지 컬렉터가 활성화될 수 있어요. |
pointer_safety::preferred |
모든 포인터가 유효한 것으로 간주되어 역참조·해제할 수 있어요. 도달 가능성 기반 누수 감지기가 활성화될 수 있어요. |
pointer_safety::relaxed |
모든 포인터가 유효한 것으로 간주되어 역참조·해제할 수 있어요. |
대부분의 실용적인 구현은 relaxed를 사용해요. pointer_safety::strict에서는 안전하게 파생되지 않은 포인터로 역참조하거나 해제하면 동작이 미정의될 수 있어요.
// 접근 방식 (제거 전)
switch (std::get_pointer_safety()) {
case std::pointer_safety::strict: // ...
case std::pointer_safety::preferred: // ...
case std::pointer_safety::relaxed: // ...
}
C++23에서 pointer_safety, get_pointer_safety, 관련 GC 함수들이 함께 제거됐어요. 새 코드에서는 사용하지 않아요.