'무한루프'에 해당되는 글 1건

  1. 2007.08.29 무한루프,, 동적 할당,, 리소스 관리..
Study- MSC/Computer2007. 8. 29. 01:52

  몇 분 전에 있었던 일이다.


  MSYS랑 MinGW깔아서 연습하고 있었는데

  실수로 무한 루프를 돌게 코드를 짰다.


  그렇게 컴파일 하고 실행시키니 역시 빠져나오질 못했다. 그래서 그냥 응용프로그램 끄듯이 MSYS를 껐었다. 처음엔 아무 이상이 없었다.


  그러다가 무한 루프가 도는 이유를 정확하게 잡지 못하고 디버깅하고 컴파일하고 실행시키길 3번..


  갑자기 컴퓨터가 엄청나게 느려졌다. 왜 이러지 싶었는데 혹시나 그 프로그램이 아직도 돌아가고 있나 싶어서 작업 관리자의 프로세스를 확인해 보았다.


  역시나.. 그 프로그램이 무한루프를 돌면서 CPU를 50 가까이 잡아먹고 있었고, 그게 3개나 켜져 있었다. 당장 꺼버리니 나아졌다.


  아무리 메신저랑 웹 브라우저 몇 개를  켜 놓고 있었다지만 램이 1GB나 되었는데 그런 상황까지 벌어 졌었다.


  보통 윈도우 상에서 콘솔 기반 프로그래밍을 할때,  포인터를 잘못 만진다거나, 무한루프가 돌거나, 동적 할당을 해제 안했다거나 하는 오류를 범하면 웬만한건 윈도우가 알아서 종료시켜 준다. 대표적으로 MSVC에서 포인터 잘못 만졌을때 윈도우에서 오류 메세지를 보여주면서 강제로 종료시켜 버린 것은 많이 봤을 것이다.  하지만 모든 컴퓨팅 환경이 그렇게 친절하다고 생각하면 큰 오산이다. 예를 들어 예전 도스 환경이나 유닉스 쉘 환경에서 프로그래밍 하던 프로그래머들이 이런실수를 범했다면 어떘을까? 단순이 프로그램 하나가 강제 종료되는 수준이 아닌 자칫하면 시스템 자체가 다운되어 버리는 사태가 발생할 수 도 있을 것이다. 특히 동적 할당 같은 경우는 해제를 잘 안해 주면 처음엔 프로그램이 잘 돌아가다가 나중에 다운되어 버리는 기막힌 상황이 발생한다. 이런건 디버깅위치를 찾는것도 어렵다.


  사실, 공부할 때 이런 에러들을 겪으면서 이게 만약 윈도우 환경이 아닌 다른 환경이였다면 어땠을까? 하는 생각을 하긴 했었다. 그런데 이렇게 실감을 하니 더 무서워졌다. 좋은 경험 하나 했다. 앞으론 더 섬세히 코딩하는 습관을 들여야겠다.

Posted by 머리