다음을 통해 공유


/Zc:sizedDealloc(전역으로 크기가 지정된 할당 해제 함수 사용)

/Zc:sizedDealloc 컴파일러 옵션은 개체의 크기를 사용할 수 있을 때 형식 size_t 의 두 번째 매개 변수가 있는 전역 operator delete 또는 operator delete[] 함수를 우선적으로 호출하도록 컴파일러에 지시합니다. 이러한 함수는 매개 변수를 size_t 사용하여 할당 취소자 성능을 최적화할 수 있습니다.

구문

/Zc:sizedDealloc[-]

설명

C++11 표준에서는 정적 멤버 함수를 operator delete 정의하고 operator delete[] 두 번째 size_t 매개 변수를 사용할 수 있습니다. 일반적으로 이러한 함수는 연산자 새 함수와 함께 사용되어 개체에 대한 보다 효율적인 할당자 및 할당 취소자를 구현합니다. 그러나 C++11은 전역 범위에서 동일한 할당 취소 함수 집합을 정의하지 않았습니다. C++11에서 형식 size_t 의 두 번째 매개 변수가 있는 전역 할당 취소 함수는 배치 삭제 함수로 간주됩니다. 크기 인수를 전달하여 명시적으로 호출해야 합니다.

C++14 표준은 컴파일러의 동작을 변경합니다. 전역 operator delete 을 정의하고 operator delete[] 형식 size_t의 두 번째 매개 변수를 사용하는 경우 컴파일러는 멤버 범위 버전이 호출되지 않고 개체의 크기를 사용할 수 있을 때 이러한 함수를 호출하는 것을 선호합니다. 컴파일러는 크기 인수를 암시적으로 전달합니다. 컴파일러가 할당 취소되는 개체의 크기를 확인할 수 없는 경우 단일 인수 버전이 호출됩니다. 그렇지 않으면 호출할 할당 취소 함수의 버전을 선택하는 일반적인 규칙이 계속 적용됩니다. 범위 확인 연산자(::)를 할당 취소 함수 호출 앞에 추가하여 전역 함수에 대한 호출을 명시적으로 지정할 수 있습니다.

기본적으로 Visual Studio 2015부터 Visual C++는 이 C++14 표준 동작을 구현합니다. /Zc:sizedDealloc 컴파일러 옵션을 설정하여 명시적으로 지정할 수 있습니다. 이는 잠재적으로 호환성이 손상되는 변경을 나타냅니다. 코드가 형식size_t두 번째 매개 변수를 사용하는 배치 삭제 연산자를 정의하는 경우와 같이 /Zc:sizedDealloc- 옵션을 사용하여 이전 동작을 유지합니다. 형식 size_t 의 두 번째 매개 변수가 있는 전역 할당 취소 함수의 기본 Visual Studio 라이브러리 구현은 단일 매개 변수 버전을 호출합니다. 코드에서 단일 매개 변수 전역 연산자 삭제 및 연산자 삭제[]만 제공하는 경우 전역 크기 할당 취소 함수의 기본 라이브러리 구현은 전역 함수를 호출합니다.

/Zc:sizedDealloc 컴파일러 옵션은 기본적으로 설정됩니다. /permissive- 옵션은 /Zc:sizedDealloc에 영향을 주지 않습니다.

Visual C++의 규칙과 관련된 문제에 대한 자세한 내용은 Nonstandard Behavior을 참조하세요.

Visual Studio 개발 환경에서 이 컴파일러 옵션을 설정하려면

  1. 프로젝트의 속성 페이지 대화 상자를 엽니다. 자세한 내용은 Visual Studio에서 C++ 컴파일러 및 빌드 속성 설정을 참조하세요.

  2. 구성 드롭다운 메뉴에서 모든 구성을 선택합니다.

  3. 구성 속성>C/C++>명령줄 속성 페이지를 선택합니다.

  4. /Zc:sizedDealloc 또는 /Zc:sizedDealloc 포함하도록 추가 옵션 속성을 수정한 다음 확인을 선택합니다.

참고 항목

MSVC 컴파일러 옵션
MSVC 컴파일러 명령줄 구문
/Zc(규칙)