공부/C

malloc과 free의 개념 및 차이점

셩잇님 2023. 1. 16. 23:32
반응형

 

 

1. malloc()

malloc은 런타임 중에 메모리를 할당하는 C 언어의 함수입니다. 이는 할당할 메모리의 바이트 수를 단일 인수로 사용합니다. 만약 할당에 성공할 경우, 할당된 메모리의 시작에 대한 포인터를 반환합니다. 만약 할당에 실패하면 NULL을 반환합니다.

 

2. free()
free는 이전에 malloc과 같은 함수를 이용해 할당한 메모리를 해제하는 C 언어의 함수입니다. 포인터에서 free가 호출되면 포인터가 가리키는 메모리는 프로그램에서 재사용할 수 있습니다. 메모리 누수를 방지하기 위해 더 이상 사용하지 않은 메모리에 free() 함수를 이용하여 여유 공간을 확보하는 것이 중요합니다.

 

3. malloc() 함수와 free() 함수의 예제입니다.

#include <stdlib.h>

int main() {
    int n = 10;
    int *array = (int*) malloc(n * sizeof(int));

    if (array == NULL) {
        printf("Error allocating memory\n");
        return 1;
    }

    // Use the allocated memory
    for (int i = 0; i < n; i++) {
        array[i] = i;
    }

    // Do something with the array

    // Free the allocated memory
    free(array);

    return 0;
}

 

 

 

반응형