C언어 문제좀 내본다고 VS에서 %n 서식문자를 써보려는데 오류가 발생.. 코드는 아래와 같습니다.
=================================
#include <stdio.h>
int main(void)
{
int val;
printf("ezbeat %n \n",&val);
printf("%d \n",val);
return 0;
}
=================================
컴파일 하고 실행하면..
이와 같은 창이 떠버리게되네요.
중간 문장을 읽어보면 n 형식 지정자는 disable 되어 있다네요.
뭐 결론.. enable 시키면되는데 vs는 디폴트로 %n 서식문자를 막아놓나보네요.
아마 FSB를 방지하기 위함 아닐까요? ^^; 그 이유말곤 막을 이유가 없는 듯 싶군요.
다행히 구글링 결과 해결 방법이 바로 나옵니다. 이 문제를 해결한 코드를 봐보죠.
_set_printf_count_output 함수를 추가시켜서 코드를 구성해봤습니다.
가운데 printf문 2개는 %n이 허용된 부분입니다. 저렇게 %n을 개발자가 사용할 때만 Enable 시켜놓고
그 외에는 disable 시켜놈으로써 FSB에 노출되지 않도록 하는 것이 좋겠네요.
그러면 위 코드에서는 가장 아래있는 printf문을 수행하면?! 아마 뻑이나겠죠? ^^
그 외에도 _get_printf_count_output 함수를 사용하면 상태를 얻어올 수 있습니다.
함수 정의입니다. :D
'My Study > Programming&Theory' 카테고리의 다른 글
Intel VT-x 와 BSOD.. ㅠㅠ (0) | 2012.07.16 |
---|---|
PE 파일의 .reloc 섹션 (8) | 2012.06.06 |
ELF 파일의 PLT, GOT (3) | 2012.04.26 |
Calling Convention Process for AMD 64 Bit (4) | 2012.04.02 |
Windows rand() 랜덤 비율 (2) | 2012.02.14 |