scope const goto stack 배열

markyang92·2023년 2월 14일
0

C

목록 보기
6/7
post-thumbnail
  • C89

    • c89 에서는 에러임



함수 선언 범위


const


const 베스트 프랙티스

  • 기본적으로 모든 변수에 const 붙인다.

goto

goto <label_name>;
...
<label_name>:
  • 같은 함수 내에 있는 레이블로 점프함

  • 에러코드 처리할 때 편하다.
    아래 처럼 공통 에러 핸들링할 때 편하다

stack

  • 각 함수에서 사용하는 지역 변수 등을 임시적으로 저장하는 공간
  • 스택 메모리 크기 = 빌드 시 결정
  • 스택 메모리 위치 = 실행 시 결정
    • 컴퓨터마다 가상메모리, 메모리크기가 다르니까!

  • 힙 보다 스택을 사용하는게 조금 더 빠름

스택의 크기

  • 플랫폼 따라 달라짐
  • 심지어 프로그래머카 컴파일 시, 스택의 크기를 정해줄 수도 있음
  • clang windows에서는 아무것도 정하지 않으면 대략 1MB 정도
  • 스레드마다 콜 스택 크기가 다를 수 있다.

  • 스택의 크기가 약 1MB인데 이런 코드를 실행하면, 바로 스택 오버플로우
int add(const int a, const int b)
{
	char buff[1024 * 1024];
    int res = a + b;
    return res;
}
  • 좋은 툴이면, 에러 반환
  • 사용하지 않는다면 런타임에서 에러는 안날 수 있음
  • 따라서, 너무 큰 데이터를 사용할 때는 스택을 사용하지 말자!!!!!!
    • 동적 메모리 할당 쓰자.

배열의 크기를 함수로 구할 때 주의


배열

배열 모든 값 0으로 초기화

int nums[10] = { 0, };
profile
pllpokko@alumni.kaist.ac.kr

0개의 댓글