logo

배열의 크기는 꼭 상수로만 지정해야 할까

* 관련 기술 스택이 없습니다
emoji

• Visual C++에서는 '가변 길이 배열'을 사용할 수 없으며, 이는 C99 표준 문법에 적용되어 있지만 C11 버전에서는 필수가 아니기 때문이다. 반면에, 리눅스나 유닉스 운영체제에서 많이 사용하는 gcc 계열의 컴파일러는 '가변 길이 배열' 표준안이 채택되어 사용이 가능하다.
• 가변 길이 배열(Variable-Length Array)은 배열의 크기를 컴파일 타임에 정하지 않고 실행 타임에 정할 수 있도록 하는 기능으로, malloc 함수와 비교했을 때 메모리 관리가 자동으로 이루어진다는 장점이 있다.
• 하지만, 가변 길이 배열은 큰 크기의 배열을 사용할 때 부적합하며, 스택 오버플로우 위험성이 있어 유의해야 한다. 또한, 선언된 범위 내에서만 유효하다는 제한이 있다.
• 반면에, malloc을 통해 생성된 배열은 heap 영역에 저장되며, free를 호출할 때까지 프로그램 모든 곳에서 사용이 가능하다. 이로 인해 크기가 큰 배열을 다룰 때에는 malloc을 이용하는 것이 더 좋다.

thumbnail
북마크
공유하기
신고하기
5분 분량
조회수 166
profile-imageJONGHYUNJUNG
2년 전
Copyright © 2025. Codenary All Rights Reserved.