본문 바로가기
SWE/코테

백준 컴파일 에러 / 런타임 에러

by S나라라2 2018. 11. 5.
반응형
  • c++11 에서 INT_MAX 를 사용하면 컴파일 에러가 난다. -> INT8_MAX 사용하기

visual studio에서 돌렸을 때 INT8_MAX는 127이라는 값을 가져서 진짜 최대값이 아닐 수도 있음,,,(이유모르겠음)

차라리 987654321을 최대로 넣는게 나은 것 같다.


  • c++ 에서 memset을 사용하려면 #include<cstring> 헤더를 추가해줘야 한다.

c에서 memset을 사용하려면 #include <string.h> 헤더를 추가해줘야 한다.

(memcpy도 동일한 헤더)


  • 최대 배열 할당

전역변수 int로 선언할 때, 최대 3,000,000(삼백만)까지 할당 가능했었음. (이건 그냥 내 경험에서,,,)


  • 런타임 에러 이유

- 배열에 할당된 크기를 넘어서 접근했을 때

- 전역 배열의 크기가 메모리 제한을 초과할 때

- 지역 배열의 크기가 스택 크기 제한을 넘어갈 때

- 0으로 나눌 때

- 라이브러리에서 예외를 발생시켰을 때

- 재귀 호출이 너무 깊어질 때

- 이미 해제된 메모리를 또 참조할 때


  • memset은 0과 -1만 가능하다

https://www.acmicpc.net/board/view/23217#comment-40375


  • scanf_s 가 아니라 scanf 사용하기

visual studio에서 돌릴 때는 scanf 사용하려면, #define _CRT_SECURE_NO_WARNINGS 사용하기


  • 백준 자주 틀리는 요인

https://www.acmicpc.net/blog/view/70


반응형