달력

5

« 2024/5 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
2013. 5. 17. 07:06

static 배열과 auto 배열의 차이 C언어 이야기2013. 5. 17. 07:06

case1)

foo(){

int size = 8;

static temp[size];




}

case2)

foo(){

int size = 8;

temp[size];

}


둘다 컴파일 될까?






정답은, case1은 안되고, case2는 된다. 좀만 생각하면 당연한 이야기이지만,

왜? static은 컴파일 타임에 이미 링커에 의해 메모리 할당이 되어있어야 한다. 하지만 저렇게 런타임에 static 배열을 초기화 한다는 것 자체가 모순이다.

case2는 temp배열은 auto변수이므로, 호출될 때, size에 따라 스택에 배열을 할당할 수 있다.

'C언어 이야기' 카테고리의 다른 글

씨언어 강제로 브런치하기  (0) 2013.06.07
C언어 형변환...  (1) 2013.05.25
이차원배열과 그 순회방법  (0) 2013.03.30
linux hlist 분석  (0) 2013.02.09
공유라이브러리 연습  (0) 2013.01.28
:
Posted by НooпeУ


Code Start Code End