|
희한한일이 있습니다.
제가 잘 몰라서 그런건지...
unsigned char형 변수 temp를 함수 인자로 받아서
sprintf(aa, "%02x", temp); 로 aa에 값을 넣습니다.
그런데 aa가
char aa[2]; 이렇게 선언이 되면 릴리즈 모드에서 실행시 Access Violation에러가 납니다.
디버그 모드에서는 안나고요.
char *aa = new char[2]라고 하면 에러가 안납니다.
둘간의 차이가 스택에 메모리가 잡히는 것과 힙영역에 메모리가 잡히는 차이밖에 없는거 아닌가요?
디버그 모드에서는 변수 초기화를 안하더라도 자동으로 초기화를 시켜준다고 하더라구요.
릴리즈 모드에서는 초기화가 되지 않고요. 그래서 char aa[2]로 선언한것을 초기화 시켰습니다.
char aa[2] = {0x00, }; 이렇게요. 그래도 에러납니다.
이상한것은 이런형태의 다른 프로그램을 간단하게 만들어봤는데 두경우 모두 에러가 나지 않았습니다.
이게 무슨 상황인가요? 혹시 스택영역이 부족해서 그런가요? 도움 주실부운.......?
|