본문 바로가기
industry/국내기업산업분석

_CRT_SECURE_NO_WARNNINGS 위에 쓰는 이유

by Peter Choi 2023. 7. 29.
반응형

MS Visual Studio를 쓰다 보면, scanf가 안되는 현상이 발생한다. 버퍼 오버플로우를 막기 위한 수단으로 VS에서는 가급적이면 scanf_s를 쓰도록 권장하고 있다. 

 

0. 왜 버퍼 오버플로우가 보안 문제를 일으키는가?

할당되지 않은 메모리에 데이터가 덮어씌워질 수 있는 점이 위험하다. 프로그램의 다른 변수들이 손상되는 결과를 초래할 수 있다. 물론 불편한 건 사실이다. scanf_s를 사용하려면, 공간을 할당하는 과정이 귀찮으니까

 

1. 그래서 전처리를 한다

그래서 MSVS를 쓰는 사용자(혹은 개발자)들은, 최상단에 

#define _CRT_SECURE_NO_WARNINGS

를 적어주게 된다. 근데 바로 밑에만 내려가서 적어도, 제대로 효과가 안나온다 

 

2. "전처리기"니까

#define _CRT_SECURE_NO_WARNINGS를 #include <stdio.h> 보다 아래에 써주면 이 안전성 에러를 무시하라는 메세지가 <stdio.h> 안에 있는 scanf 에 반영이 되지 않으니까  <stdio.h>  는 이보다 위에 있어 이미 컴파일 하고 지나가버린 상태이기 때문이다

 

이렇게 정리가 된다

반응형

댓글