Green55   6년 전

int n = 5;

int arr[n] = {1,2,3,4,5};

와 같은 동적할당이 c++ 표준인가요?

관련 내용을 c++ 레퍼런스에서 찾아보려고 해 잘 찾을 수가 없네요..

chogahui05   6년 전

그건 동적 할당이 아닌 거 같은데요.


int n=5;

int arr[n] = {1,2,3,4,5};

배열 크기가 정해지잖아요. 컴파일러가 해석한 시점에. 프로그램이 실행되는 시점에서

arr의 크기가 정해지지 않아요.


동적 할당이라면 보통은 이렇게 쓰시죠.

int *p=(int *)malloc(sizeof(int)*x);

혹은

int *p=new int[3];


이 경우에는 컴파일 시간에 정해지진 않죠. new나 malloc 연산을 만나는 순간.

아. 어딘가에 메모리를 할당시켜야 겠구나. 하고 할당시켜버립니다.

yukariko   6년 전

위와 같은 코드는 C 표준으로 variable-length array 라고 부릅니다.

다만 C++ 표준은 아닙니다. gcc에선 지원해주는데 vs에선 컴파일 에러가 뜨게됩니다.

yukariko   6년 전

참고로 variable-length array도 런타임에 크기가 결정되기때문에 동적할당이라 할 수 있습니다.

대신 데이터는 힙대신 스택에 쌓이게됩니다.

댓글을 작성하려면 로그인해야 합니다.