atoi() 함수가 리턴해주는 값이 DEBUG 모드일땐 정상적이지만 RELEASE 모드일땐 무조건 잘못된값을 리턴해주는 경우가 있습니다.
물론 불안정한 코드일때 발생하는 경우이지만
어째서 디버그 모드일땐 정상적인 값이 나오고 릴리즈 모드일때만 비정상적인 결과가 나오는 차이가 나는지가 궁금합니다.
각설하고 코드 조각으로 올려볼까요??
#include <stdio.h>
#include <assert.h>
int nTestInt = 102345;
char sztest[16];
sprintf(sztest, "%d", nTestInt);
int nLength = strlen(sztest);
int nResult;
for( int i = 0; i < nLength; i++)
{
char sztemp1;
CopyMemory( &sztemp1, &sztest, sizeof(sztemp1));
nResult = atoi( &sztemp1);
if( nResult < 0 || nResult > 5)
{
char sztempResult[48];
sprintf(sztempResult,"%d <-- 이런 이상한 숫자가 들어왔어요", nResult);
MessageBox( NULL, sztempResult, "난 메세지 박스", MB_OK );
}
}
물론 sztemp1 이라는 녀석에게 NULL 값이 들어갈 자리조차 주지 않은게 가장 근본적인 잘못이지만.
저 코드 직접 돌려볼 필요도 없겠지만... 어째서 DEBUG 모드일땐 되고 RELREASE 모드 일땐
안되는 차이가 나는건지 살짝콩 궁금해져서 이렇게 질문 올립니다..
atoi() 함수에 관해서 끄적끄적 질문
Moderator: 류광
-
- Posts: 142
- Joined: 2006-01-31 18:34
- Location: (주)NHN
- Contact: