2010-05-03 6 views
8

가변 길이 배열을 관리하는 방법 (가변 길이 배열을 갖기 위해 추가 변수 또는 데이터 구조가 스택에 유지되는 방법)을 알고 싶습니다.가변 길이 배열

고마워요.

답변

4

동적 인 크기의 배열 (구현에 따라 다르지만 일반적으로 스택에 있음)입니다. 예전에는 alloca과 비슷하지만 sizeof은 배열의 실제 크기를 반환합니다. 이는 배열의 크기도 어딘가에 저장되어야 함을 의미합니다 (구현에 따라 다르지만 스택에도 있음).).

+1

'alloca()'배열을 만든 후 크기를 조사 할 방법이 없었기 때문에 사실은 아니지만 'sizeof'는 VLA에서 작동합니다 (if 당신은 배열에서'sizeof'를 호출한다, 그 크기는 어딘가에 유지되어야한다). – caf

+0

@caf : 좋은 점 - 크기가 어딘가에 저장되어야한다고 생각합니다 (구현에 따라 다름) - 내 대답을 업데이트 할 것입니다. –

1

가변 길이 배열의 크기는 컴파일 타임 대신 런타임에 결정됩니다.
관리 방법은 컴파일러에 따라 다릅니다.
예를 들어, GCC는 스택에 메모리를 할당합니다.
그러나 특별한 구조는 없습니다. 그것은 단지 런타임에서 크기가 알려진 정상 배열입니다.

-2

대신에 몇 가지 컨테이너를 사용할 수 있습니다. 배열 목록을 java 또는 벡터에서 c/C++

+0

-1 질문과 관련이 없습니다 (C99의 기능이 어떻게 구현 될 수 있는지). –