버퍼에 사용한 뒤에 주변의 변수가 달라져요.
글쓴이: jai / 작성시간: 금, 2004/07/23 - 7:11오후
로컬변수 두개인데요.
char name[64]="test";
char buf[2048];
로 연달아 선언했어요.
buf 를 함수에 인자로 넘겨주고, 함수가 끝나면 아래처럼 name 의 값이 사라져버려요.
name: test name 0x7fbffff6d0 buf 0x7fbfffeed0
name: name 0x7fbffff6d0 buf 0x7fbfffeed0
name: name 0x7fbffff6d0 buf 0x7fbfffeed0
그래서 연달아 있던 name, buf 를 선언 처음과 마지막으로 띄어 놨더니
name: test name 0x7fbffff6d0 buf 0x7fbfffee30
name: test name 0x7fbffff6d0 buf 0x7fbfffee30
name: test name 0x7fbffff6d0 buf 0x7fbfffee30
정상적으로 나오는데요.
영 찜찜한 내용이어서요.
비슷한 경험을 하신 분들이 계시면,
어떻게 해결하셨는지 너무 궁금합니다.
로컬변수 선언할때 조심할게 있을까요?
Forums:
이런 경우는 거의 99% buf array size를 넘어서 writ
이런 경우는 거의 99%
buf array size를 넘어서 write하여서 그렇습니다.
buf[2048] = 0;
처럼 배열 범위가 넘어간 곳에 써서 그렇습니다.
댓글 달기