ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • C/C++ malloc(3)
    C,C++ & Linux 2020. 5. 22. 18:52
    728x90

    함수 기능

    힙 메모리를 할당하는 함수입니다.

     

    Linux / Unix는 가용한 힙 메모리를 자유 공간 블럭(free memory block)의 리스트로 관리합니다. 이를 자유 공간 풀(free memory pool)이라고도 부르는데 malloc() 계열의 함수를 호출하게되면 이 리스트를 정해진 알고리즘으로 탐색하여 적절한 크기를 가진 메모리를 찾고 해당 메모리의 주소를 리턴하는 것입니다.

     

    힙 메모리에 할당 받은 메모리는 함수가 끝나더라도 할당 해제 되지 않으므로 적절한 시점에 free() 하여 메모리 누수가 생기는 것을 방지해야합니다.

    함수 원형

    #include <stdlib.h>
    
    void *malloc(size_t size);

     

    매개변수

    size

    할당받고자 하는 메모리의 크기 (바이트 단위)

     

    반환값

    성공 시 할당 받은 메모리를 가리키는 포인터

    에러 시 NULL 리턴

    예제

    #include <stdio.h>
    #include <stdlib.h>
    #include <unistd.h>
    
    int main(int argc, char *argv[]) {
        int *arr;
    	
    	// sizeof(int) = 4
    	// 4 * 4 = 16 바이트 할당 요청
        arr = (int *) malloc(sizeof(int) * 4);
    
        for (int i = 0; i < 4; i++) {
            arr[i] = i;
            printf("%d\n", arr[i]);
        }
    
        exit(0);
    }
    

     

    결과

     

     

     

     

     

     

     

     

     

     

    리눅스시스템프로그래밍 저자 : 홍지만
    https://book.naver.com/bookdb/book_detail.nhn?bid=14623672

    책에 기술된 예제 프로그램입니다. 책 내부에는 훨씬 더 많은 자료가 있습니다. (개인적으로 좋았습니다.)

    'C,C++ & Linux' 카테고리의 다른 글

    C/C++ realloc(3)  (0) 2020.05.22
    C/C++ calloc(3)  (0) 2020.05.22
    C/C++ atexit(3), on_exit(3)  (0) 2020.05.22
    C/C++ exit(3) _exit(2) _Exit(2)  (0) 2020.05.22
    C/C++ tempnam(3)  (0) 2020.05.22

    댓글

Designed by Tistory.