다음을 통해 공유


/Gs(컨트롤 스택 검사 호출)

스택 프로브의 임계값을 제어합니다.

구문

/Gs[size]

인수

size
(옵션) 스택 프로브가 초기화되기 전에 지역 변수가 차지할 수 있는 바이트 수 입니다. 공백과 . 사이에 /Gssize허용된 공백은 없습니다.

설명

스택 프로브는 컴파일러가 함수 호출의 시작 부분에 삽입하는 코드 시퀀스입니다. 시작되면 스택 프로브는 함수의 지역 변수를 저장하는 데 필요한 공간의 양만큼 메모리에 무해하게 도달합니다. 이 프로브를 사용하면 나머지 함수가 실행되기 전에 필요한 경우 운영 체제가 더 많은 스택 메모리에서 투명하게 페이지가 지정됩니다.

기본적으로 컴파일러에서는 함수에 스택 공간이 2페이지 이상 필요한 경우 스택 프로브를 초기화하는 코드를 생성합니다. 이 기본값은 x86, x64, ARM 및 ARM64 플랫폼의 /Gs4096 컴파일러 옵션과 동일합니다. 이 값은 애플리케이션 및 Windows 메모리 관리자가 런타임 시 프로그램 스택으로 동적으로 커밋되는 메모리 양을 늘리도록 합니다.

참고 항목

기본값 /Gs4096 을 사용하면 Windows용 애플리케이션의 프로그램 스택이 런타임에 올바르게 증가할 수 있습니다. 변경해야 할 확실한 이유가 없는 경우에는 이 기본값을 변경하지 마세요.

일부 프로그램(예: 가상 디바이스 드라이버)에는 이 기본 스택 증가 메커니즘이 필요하지 않습니다. 이러한 경우 스택 프로브는 필요하지 않으며 로컬 변수 스토리지에 필요한 함수보다 큰 값으로 설정 size 하여 컴파일러의 생성을 중지할 수 있습니다.

/Gs0 는 지역 변수에 대한 스토리지가 필요한 모든 함수 호출에 대한 스택 프로브를 시작합니다. 이 값은 성능에 부정적인 영향을 미칠 수 있습니다.

x64 대상의 경우 인수 없이 옵션을 지정 /Gs 하면 다음과 같습니다/Gs0.size 인수가 size 1에서 9이면 컴파일러에서 경고 D9014를 내보내고 효과는 지정하는 /Gs0것과 같습니다.

x86, ARM 및 ARM64 대상의 /Gs 경우 인수/Gs4096가 없는 size 옵션은 . 인수가 size 1에서 9이면 컴파일러에서 경고 D9014를 내보내고 효과는 지정하는 /Gs4096것과 같습니다.

모든 대상의 size 경우 10에서 2147483647 사이의 인수는 지정된 값으로 임계값을 설정합니다. size 2147483648 이상이면 심각한 오류 C1049가 발생합니다.

지시문을 사용하여 check_stack 스택 프로브를 켜거나 끌 수 있습니다. /Gscheck_stack pragma는 표준 C 라이브러리 루틴에 영향을 주지 않습니다. 컴파일하는 함수에만 영향을 줍니다.

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

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

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

  3. 추가 옵션에서 /Gs 컴파일러 옵션 및 선택적 크기를 입력합니다. 확인을 선택하거나 적용하여 변경 내용을 저장합니다.

프로그래밍 방식으로 이 컴파일러 옵션을 설정하려면

참고 항목

MSVC 컴파일러 옵션
MSVC 컴파일러 명령줄 구문