>백엔드 개발 >C++ >동적 메모리 할당 없이 C에서 런타임 크기 배열을 어떻게 선언할 수 있습니까?

동적 메모리 할당 없이 C에서 런타임 크기 배열을 어떻게 선언할 수 있습니까?

DDD
DDD원래의
2024-12-20 14:08:17638검색

How Can I Declare a Run-Time Sized Array in C   without Dynamic Memory Allocation?

동적 할당 없이 런타임 시 배열 크기: C99 혁신

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.