C에서 런타임 시 결정된 크기로 배열을 선언한다는 개념은 종종 우려를 불러일으킵니다. . 그러나 최근 특이한 코드 조각을 접하면서 다음과 같은 질문이 촉발되었습니다. 어떻게 동적 할당 없이 배열을 선언하면서 런타임 시 크기를 지정할 수 있습니까?
다음 C 코드를 고려해보세요.
int main(int argc, char **argv) { size_t size; cin >> size; int array[size]; for (size_t i = 0; i < size; i++) { array[i] = i; cout << i << endl; } return 0; }
GCC와 같은 컴파일러는 가변 크기 배열을 허용하는 C99 기능을 채택했습니다. 이 혁신적인 기능을 사용하면 실행 중에 결정될 수 있는 크기로 배열을 스택에 선언할 수 있습니다. 그러나 new 또는 malloc을 사용한 동적 할당과 달리 가변 크기 배열은 고정 크기의 배열을 선언하는 것과 유사하게 스택에 메모리를 할당합니다.
가변 크기 배열은 동적 할당에 비해 성능상의 이점을 제공합니다. 힙 메모리 관리의 오버헤드. 이러한 어레이는 스택에 메모리를 할당함으로써 메모리 조각화 가능성을 줄이고 프로그램 성능을 향상시킵니다.
이 기능은 C99에만 해당되며 이전 버전의 C 언어에서는 지원되지 않는다는 점을 강조하는 것이 중요합니다. 따라서 가변 크기 배열에 의존하는 코드가 있는 경우 저장 크기 오류를 방지하기 위해 C99 호환 컴파일러로 컴파일해야 합니다.
위 내용은 동적 메모리 할당 없이 C에서 런타임 크기 배열을 어떻게 선언할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!