Skip to main content

정수 오버플로 란 무엇입니까?

정수 오버플로는 적용 가능한 범위의 끝에 도달 할 때 표지판이 양수에서 음수로 전환되는 특정 컴퓨터 데이터 유형에서 발생하는 현상을 나타냅니다.컴퓨터 범위에서 정수 데이터 유형에는 원형 범위가 있으며 범위의 한쪽 끝에 도달하면 즉시 범위의 다른 쪽 끝으로 이동합니다.이것을 정수 오버플로라고도합니다.;오히려, 다음으로 증가하는 숫자는 그 범위의 다른 쪽 끝에 있습니다 : (2

31

-1).범위의 끝에서 음성에서 양수로의 변화는 정수 오버플로의 예입니다.마찬가지로, 정수의 값은 2 31 의 값을 가질 수 없습니다.이 값은 대신 범위의 다른 쪽 끝으로 전환되어 -2 31 가됩니다.배열은 정수 유형이 허용하는 것만 큼 많은 지수를 가질 수 있으며 음수 지수는 계산하지 않습니다.프로그래머가 정수 유형보다 큰 배열을 생성하려고 시도하면 정수 오버플로가 음수 인덱스를 초래하기 때문에 중요한 메모리 오류가 발생할 수 있습니다.이것은 C ++와 같은 어레이에 대한 명시 적 경계를 점검하지 않는 언어에서 특히 위험합니다. 정수 오버플로가 발생하면 버퍼 오버플로, 힙 오버플로 및 스택 버퍼 오버플로와 같은 관련 오버플로가 발생할 수 있습니다.이러한 모든 경우에, 정수 오버플로는 해당 구조가 상상할 수있는 것보다 더 많은 데이터로 메모리 구조를 압도하는 역할을합니다.간단한 프로그램에서 이러한 오버 플로우는 종종 유효하지 않은 읽기 또는 유효하지 않은 쓰기 오류를 일으키는 것보다 훨씬 더 많은 일을하지 않습니다.그러나 해커 의이 문제 조작은 더 심각한 문제를 일으킬 수있는 메모리 오류를 엔지니어링 할 수 있습니다.정수 유형의 한계는 많은 데이터가 한 번에 처리되지 않으면 오버플로 문제가 작동하지 않을 정도로 충분히 크다.경우에 따라 카운터 증가의 경우 더 넓은 범위의 더 큰 데이터 유형을 사용하여 오버 플로우를 완화 할 수 있습니다.이론적으로는 더 큰 데이터 유형이 결국 동일한 오버플로 문제를 겪을 수 있지만 데이터 유형 범위가 커짐에 따라 수행 할 가능성은 점점 작아집니다.각 정수 데이터 유형 범위는 다음으로 가장 작은 크기의 두 배 이상이므로 추가 데이터를위한 충분한 공간이 있습니다.