C/C언어 문법
C언어 배열 선언할 때 배열의 길이를 변수나 상수가 아닌 값으로 사용하기 (VLA) 가변길이배열
나는 원래 배열을 선언할 때 길이를 무조건 컴파일 타임 상수로 써야한다고 알고 있었고 그렇게 사용해오고 있었다. 하지만 개발하다보니 코드 낭비가 심했다. (쓸데없이 동적 할당을 하거나, 포인터 배열을 동적으로 사용하고 싶을 때 등) 코드를 낭비하는 것을 해결하고 싶어서 혹시나 하는 마음에 사용해보니 오류가 뜨지 않고 잘 사용되었다. 컴파일은 리눅스에서 하다보니 당연하게도 GCC를 사용하여 컴파일 했었는데 되는 이유를 찾아보니... C99 부터 가변길이배열(VLA)를 지원 한다는 것이였다!! VLA란 배열의 크기를 컴파일할 때 정하지 않고 실행하면서 정할 수 있도록 하는 기능이다. VLA의 특징과 malloc과의 차이점에 대해서 말해보자면 malloc VLA 보통 힙에 저장된다. 보통 스택에 저장된다. 긴..
2022. 3. 21. 21:27
최근댓글