[c언어] 동적 메모리 할당과 정적 메모리 할당의 차이

C언어에서는 메모리를 할당하는 두 가지 방법이 있습니다: 정적 메모리 할당동적 메모리 할당입니다. 이 두 방법은 각각 메모리를 어떻게 할당하고 사용하는 지에 있어서 중요한 차이를 가지고 있습니다.

정적 메모리 할당 (Static Memory Allocation)

정적 메모리 할당은 프로그램이 실행되는 동안에 컴파일 타임에 메모리가 할당되는 것을 의미합니다. 이는 전역 변수나 정적 변수로 할당되는 메모리를 포함합니다.

예를 들어, 다음은 정적 메모리 할당의 예시입니다:

int x;  // 정적으로 메모리가 할당됨

정적 메모리 할당은 프로그램이 실행되는 동안 메모리가 고정적으로 할당되므로 실행 중에 메모리의 크기를 변경할 수 없습니다. 이는 프로그램이 실행되는 동안에 메모리 요구 사항이 변하는 경우에는 유연하지 않을 수 있습니다.

동적 메모리 할당 (Dynamic Memory Allocation)

동적 메모리 할당은 프로그램이 실행되는 동안에 런타임에 메모리를 할당하는 것을 의미합니다. C언어에서는 malloc()free() 함수를 사용하여 동적으로 메모리를 할당하고 해제합니다.

예를 들어, 다음은 동적 메모리 할당의 예시입니다:

int* ptr = (int*)malloc(sizeof(int));  // 동적으로 메모리가 할당됨
free(ptr);  // 메모리 해제

동적 메모리 할당은 프로그램이 실행되는 동안 메모리의 크기를 동적으로 조절할 수 있어 유연성을 제공합니다. 하지만 적절한 메모리 할당 및 해제를 관리해야 하며, 필요하지 않은 경우 메모리 누수가 발생하지 않도록 해야 합니다.

결론

정적 메모리 할당과 동적 메모리 할당은 메모리를 할당하고 사용하는 방법에 있어서 중요한 차이를 가지고 있습니다. 프로그램의 요구사항에 따라 적절한 방법을 선택하여 메모리를 효율적으로 관리하는 것이 중요합니다.

참고문헌: