Visual Studio에서 배열 size를 변수로 할당받는 방법
2018. 4. 16. 02:12ㆍProgramming/C/C++
리눅스에서 gcc로 작업할 때는 배열 size를 변수로 넣어줘도 잘만 돌아갔었는데
Visual Studio에는 그렇게 시도했다간
E0028 식에 상수 값이 있어야합니다.
C2057 상수 식이 필요합니다.
C2466 상수 크기 0에 배열을 할당할 수 없습니다.
C2133 'arr': 알 수 없는 크기입니다.
이렇게 네 종류의 에러메시지를 만나게 되죠.
어쩔 수 없이 동적할당으로 포인터 변수를 만드는 수밖에 없습니다.
어차피 배열도 사실 배열의 첫번째 원소의 주소값을 가리키는 포인터 변수에 불과하니까요.
#include <stdio.h> int main() { int size = 100; int* arr = malloc(size*sizeof(int)); arr[0] = 10; arr[1] = 12; printf("%d, %d\n", arr[0], arr[1]); free(arr); //쓰고난 포인터는 free로 잘 돌려줍시다. return 0; }
할당받은 이후로 배열처럼 사용하면 알아서 잘 됩니다.
윈도우 환경이라면 보통 동적 할당된 걸 free하지 않더라도 알아서 해결해주지만, 그렇다고 개발자 입장에서 손 놓아서는 안되겠죠.