• overflow
  • Zappy (IP: *.51.113.11)
    조회 수: 6069, 2007-03-21 23:54:07(2007-03-21)
  • overflow 는

    '강물이 범람하다' 또는 '물이 흘러 넘치다' 라는 사전적 의미를 가지고 있습니다.

    이것을 프로그래밍 언어에 적용해보면,

    모든 언어에서는 데이터를 임시로 저장해 둘 수 있는 '변수'라는 것을 사용합니다.

    변수를 100 리터 짜리 물통에 비유를 한다면,

    이 물통에 100 리터 이상의 물을 담았을때 발생하는 현상이 바로 overflow입니다.

    100리터 까지만 물통에 남아있고, 그 이상은 넘쳐 흐르겠지요...

    100바이트를 저장할 수 있는 변수에

    110바이트의 데이터를 저장하려 했다고 한다면,,

    컴퓨터(컴파일러)는 당연히 경고메시지를 보여주거나 이를 무시하고

    100바이트의 데이터만 저장합니다.

    나머지 10바이트가 굉장히 중요한 데이터라면, 또는 10바이트가 떨어져 나간

    100바이트의 데이터가 아무런 의미가 없다면,

    이런일이 발생하지 않도록 신경을 써야하겠지요...

    프로그래밍 도중 overflow는 빈번히 일어납니다.

    가장 대표적인 예로 배열의 index와 변수타입의 저장범위를 넘어서는 overflow를 들수 있는데,

    int index[10]; 이라고 선언한 배열에서
    index[10] = 10; 이라는 문장을 실행했을때 overflow라 할수 있습니다.
    (인덱스 0부터 순차적으로 저장해왔다는 가정하에서 입니다.
    하지만 어떤경우, 이것은 overflow가 아닐 수도 있습니다.
    왜냐하면, 배열의 인덱스만큼 할당해놓은 저장공간과 바로 뒷부분에 인접한
    공간이 메모리 할당이 되어있지 않은경우,
    컴파일러는 묵시적으로 그 자리에 넘친 데이터를 저장해놓고,
    그부분에 접근하는 것을 허용하기도 합니다.)

    int number;
    number = 10000000000000000; 이와 같은 문장도 overflow입니다.
    number의 값을 출력해보면 재미있는 결과가 나올것입니다...

댓글 0

번호 제목 닉네임 조회  등록일 
22 [레벨:18]Zappy 25176 2010-05-09
21 Zappy 12416 2007-03-25
Zappy 6069 2007-03-21
19 Zappy 10543 2007-03-21
18 Zappy 7955 2006-10-25
17 Zappy 9143 2006-10-25
16 Zappy 12226 2006-10-25
15 Zappy 7916 2006-10-25
14 Zappy 60144 2006-10-25
13 Zappy 9221 2006-10-25
XE Login