VC2008 이상에서는 sprintf 쓰면 warning 뜨면서
보안 강화 버젼인 sprintf_s, swprintf_s, _stprintf_s 를 쓰라고 한다.

아래와 같은 형식을 가지는데...

int sprintf_s( char *buffer, size_t sizeOfBuffer, const char *format [, argument] ... );

sizeOfBuffer 에 지금까지 sizeof(char) * buffer_size 형식으로 넣어주고 있었는데...
Unicode Charset 쓰는 프로젝트로 옮기면서 해당 함수 호출 시에 메모리가 깨지는 현상이 발생 -_-;;;
알고보니 sizeOfBuffer 를 잘못 쓰고 있던 것...

MSDN을 보면 아래와 같이 Parameter를 설명하고 있다.

sizeOfBuffer Maximum number of characters to store.


sizeOfBuffer 에 _countof(buffer) 이런식으로 해주는게 맞는 듯 ㅜㅅㅜ
728x90

+ Recent posts