int arr[ 5 ] = { 0 };
int i = 8; // out of bounds
arr[ i ] = 8;
이 상황에서 충돌에서 코드를 보호하는 방법이 경우에 (내가 < 0 || I> 5) 나는 또한에 SEH에 대해 알고난 그냥 내가 좋아하는 확인할 수 있다는 것을 알고
.... 비주얼 스튜디오,하지만 그것은 솔루션을 작동하지 않는 것 같습니다.
__try { /* code */ }
__except(GetExceptionCode() == EXCEPTION_ARRAY_BOUNDS_EXCEEDED)
이것은 작동하지 않습니다. SEH가 0으로 나눌 수있는 상황에서 작업하는 것을 볼 때, 보호 된 페이지에 액세스 ... 내 프로그램을 충돌로부터 어떻게 보호 할 수 있습니까?
안녕하세요 닐 버터 워스입니다. 나는 컨테이너에 대해 알고 있고 가능하면 그것을 사용하지만 배열이 필요할 때 어떻게해야합니까? –
@David 다른 주석에서 말했듯이, 배열을 사용할 필요가 없을 것입니다. 제 자신의 코드에서는 사용하지 않습니다. 그러나 필요하다고 느끼면 액세스 위반 여부를 확인할 방법이 없습니다. –
Valgrind가 범위를 벗어난 액세스를 감지 할 수 있습니까? – fredoverflow