다음을 통해 공유


확인 된 반복기

확인 된 반복기의 컨테이너 경계를 덮어쓰지 않음을 확인 합니다.

확인 된 반복기 릴리스 빌드 및 디버그 빌드에 적용 됩니다.반복기 디버그 모드에서 컴파일할 때 사용 하는 방법에 대 한 자세한 내용은 디버그 반복기 지원.

설명

확인 된 반복기에서 생성 되는 경고 메시지를 해제 하는 방법에 대 한 내용은 _SCL_SECURE_NO_WARNINGS.

확인 된 반복기 기능에 다음과 같은 기호를 사용할 수 있습니다.

  • _SECURE_SCL

    중요중요

    Use _ITERATOR_DEBUG_LEVEL to control _SECURE_SCL.자세한 내용은 _ITERATOR_DEBUG_LEVEL을 참조하십시오.

    경우 _SECURE_SCL 1, 안전 하지 않은 반복기 하면 런타임 오류가 발생 하 고 프로그램 종료 사용으로 정의 됩니다.0으로 정의 된 경우 확인 된 반복기를 사용할 수 없습니다.기본적으로 값을 _SECURE_SCL 디버그 빌드에서 릴리스 빌드에 대 한 0과 1입니다.

_SECURE_SCL 정의 되어 1로 다음 SCL 검사 수행 됩니다.

_SECURE_SCL 0으로 정의 됩니다.

  • 모든 표준 반복기가 선택 되지 않은 (반복기 이동할 수는 컨테이너 경계 보다는 정의 되지 않은 동작으로 잠재 고객).

  • 확인 된 반복기 출력 반복기입니다 경우 체크 동작 표준 함수 호출에 표시 됩니다 (예를 들어, std::copy).

  • 출력 반복기 반복기를 선택 하지 않은 경우 선택 되지 않은 동작 표준 함수 호출을 발생 합니다 (예를 들어, std::copy).

확인 된 반복기를 호출 하는 반복기를 참조 invalid_parameter_handler 컨테이너의 경계를 지 나 이동 하려고 하면.invalid_parameter_handler에 대한 자세한 내용은 매개 변수 유효성 검사을 참조하십시오.

checked_array_iterator Classunchecked_array_iterator Class 확인 된 반복기를 지 원하는 반복기 어댑터입니다.

예제

사용 하 여 컴파일하는 경우 _SECURE_SCL 1, 런타임 오류가 발생 특정 클래스의 인덱싱 연산자를 사용 하 여 컨테이너의 경계 밖에 있는 요소에 액세스 하려고 하는 경우.

// checked_iterators_1.cpp
// cl.exe /Zi /MDd /EHsc /W4
 
#define _ITERATOR_DEBUG_LEVEL 1
// implies #define _SECURE_SCL 1
 
#include <vector>
#include <iostream>
 
using namespace std;
 
int main() 
{
    vector<int> v;
    v.push_back(67);
 
    int i = v[0];
    cout << i << endl;
 
    i = v[1]; // triggers invalid parameter handler
};

이 프로그램 "67"을 인쇄 하 고 실패에 대 한 추가 정보는 어설션 오류 대화 상자를 팝 합니다.

마찬가지로, 컴파일할 때 사용 하 여 _SECURE_SCL 1, 런타임 오류가 발생 컨테이너가 비어 있을 때 앞쪽 용지 또는 특정 클래스를 사용 하 여 요소에 액세스 하는 경우.

// checked_iterators_2.cpp
// cl.exe /Zi /MDd /EHsc /W4
 
#define _ITERATOR_DEBUG_LEVEL 1
// implies #define _SECURE_SCL 1
 
#include <vector>
#include <iostream>
 
using namespace std;
 
int main() 
{
    vector<int> v;
 
    int& i = v.front(); // triggers invalid parameter handler
};

이 프로그램의 실패에 대 한 추가 정보는 어설션 실패 대화 상자 팝업 됩니다.

참고 항목

참조

표준 C++ 라이브러리 개요

디버그 반복기 지원