본문 바로가기

Programming/C/C++

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

리눅스에서 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하지 않더라도 알아서 해결해주지만, 그렇다고 개발자 입장에서 손 놓아서는 안되겠죠.