Visual Studio에서 배열 size를 변수로 할당받는 방법

2018. 4. 16. 02:12Programming/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하지 않더라도 알아서 해결해주지만, 그렇다고 개발자 입장에서 손 놓아서는 안되겠죠.