데브허브 | DEVHUB | 귀여운 오버플로우 버그
- 오버플로우 버그는 컴퓨터가 정해진 저장 범위를 넘어서는 숫자를 처리할 때 발생하는 현상으로, 예상치 못한 값으로 변질됩니다. 🐛
- 쿠키런에서는 코인 21억 이상 획득 시 음수로 변해 빚쟁이가 되는 버그가 있었고, 마비노기에서는 아이템 구매 시 계산 과정의 오버플로우로 골드 복사가 가능했습니다. 🎮
- 프리코네의 힐러 코코로는 힐량이 21억을 넘으면 파티원에게 피해를 주는 버그가 있었고, 오버워치에서는 랭크 점수가 1점 미만으로 떨어지면 5000점으로 변하는 버그가 있었습니다. 👾
- 실제 사례로 페이팔 계좌에 2의 63제곱에 달하는 금액이 표시되거나, 카지노 슬롯머신에서 최대 당첨금 6천 달러 대신 4천만 달러가 표시되는 등 오버플로우가 발생했습니다. 💸
- 숫자는 메모리에 이진법으로 고정된 크기의 칸(비트)에 저장되며, 이 칸의 개수가 저장할 수 있는 최대 숫자를 결정합니다. 💾
- 부호 없는 정수(unsigned integer)의 경우, 최댓값에 1을 더하면 저장 공간 부족으로 인해 값이 0으로 되돌아가는 현상이 발생합니다. 🔄
- 부호 있는 정수(signed integer)의 경우, 최댓값에 1을 더하면 최상위 비트가 부호 비트로 바뀌면서 갑자기 음수의 최솟값으로 변하게 됩니다. 📉
- 코딩 시 오버플로우를 고려해야 하며, 일부 고급 언어는 오버플로우 발생 시 오류를 발생시켜 예외 처리를 가능하게 하는 안전한 라이브러리를 제공합니다. 🛡️
- 파이썬은 정수가 커지면 자동으로 메모리 영역을 확장하여 오버플로우를 방지하는 특징이 있어 스크립트 작성에 편리합니다. 🐍
- 서비스가 오래될수록 인플레이션 등으로 인해 숫자값이 커질 수 있으므로, 오버플로우 발생 가능성을 주기적으로 확인하는 것이 중요합니다. 🕰️