나는 C99에서이 같은 크기가 매개 변수의 값 인 배열을 선언 할 수 있다는 사실을 알고 : 함수가 호출 될 때숨겨진 메모리 할당?
void foo(int size) {
int array[size];
// do stuff
}
, 내가 이해에서 그것은 스택에 할당됩니다. 분명히 이것은 C++에서 작동하지 않아야합니다.
void bar(vector<Thing> vec) {
for (Thing t : vec) {
int n = t.get_n();
int array[n];
// do stuff
}
}
는 놀랍게도 컴파일러 (G는 ++) 불평하지 않았다, 왜 :
는 최근에 나는 C++에서이 같은 것을 썼다? 거기에 숨겨진 메모리가 할당되어 있습니까?
경고를 설정하지 않았기 때문에 gcc 확장자 –
[가변 길이 배열이 C++ 표준의 일부가 아닌 이유는 무엇입니까?] (https://stackoverflow.com/questions/1887097)/왜 가변 가변 길이 배열 - C 표준의 일부) 또는 https://stackoverflow.com/questions/7812566/why-no-variable-size-array-in-stack 또는 https : //stackoverflow.com/questions/17899274/g-variable-size-array-no-warning 또는 https://stackoverflow.com/questions/43857625/variable-sized-array-on-the-stack 또는 기타 ... –