admin write
blogbloglocation loglocation logtag listtag listguest bookguest book
Add to favoritesrss feed

'버그양성소'에 해당되는 글 1건

  1. 2008/01/23 변수초기화 (1)

변수초기화

2008/01/23 14:52

class A {
...
int max_length;
...
void build() {
...
if (length>max_length) max_length=length;
...
}

void check();
};



머리를 벽에 헤딩하고 싶다...

중간 과정에서 어떤 자료 구조의 max_length가 나중에 필요해서 그 걸 만들 때 max_length를 구하게 하는 간단한 코드인데 나중에 check()에서 실제로 자료 구조 다시 돌면서 구한 max length와 죽어라도 안 맞는 것이다. 머냐...어디가 잘못됐지? 꽤 오랜 시간 헤메다 보니 크헐... max_length 가 초기화가 안돼서 생긴 문제였다. check 안에서 체크할 때는 지역 변수로 0으로 초기화하니 올바르게 계산되었고 max_length는 클래스 생성시 나 메쏘드 안에서 초기화를 안해줘서 엄청 큰 쓰레기 값이 들어가서 그 값이 계속 끝까지 남아 있었던 버그... 우후... 내가 죽어야지... 처음 클래스 만들 때 만든 멤버들은 모두 올바르게 초기화를 해줬으면서 중간에 max_length를 추가하면서 그냥 코딩했구나.. Java에서 멤버는 디폴트로 초기화가 0으로 되어서 무의식적으로 그냥 변수만 추가했다고 자위를 해본다.

멤버나 변수 꼭 초기화 합시다!

초기화? 0으로만 하면 되겠지...하고 습관적으로 그렇게 하다가는 큰 코 다친다.

int min_size = 0;
...
min_size = min(size, min_size);

이렇게 초기화를 잘못해줘서 버그 만든 경험도 기억이 난다. 이렇게 구한 min_size값이 대부분 우연히 맞는 값일 경운 나중에 더 골때리게 발견될 것이다. 이거 의외로 만만히 볼 문제가 아니다.

Creative Commons License

트랙백 보낼 주소 :: http://devnuri.com/trackback/8

댓글을 달아주세요:: 네티켓은 기본, 스팸은 사절

  1. 2008/01/25 16:11
    댓글 주소 수정/삭제 댓글
    자위 하지 마라. 너의 덜렁대는 성격이 어디 가겠냐? 자바를 써도 두 번째와 같은 문제를 만들껄? ㅋㅋㅋ