본문 바로가기

언어/C언어 - 300제

096 - 메모리 할당하기(malloc)

=================================================
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <malloc.h>

#define MEMORY "MEMORY"

int main(void)
{
    char* pmem;
   
    pmem = malloc(100);

    if(pmem == NULL)
    {
        puts("메모리를 할당 할 수 없습니다.");
    }
    else
    {
        strcpy(pmem,MEMORY);
        puts(pmem);
        free(pmem);
    }

    return 0;
}
=================================================
malloc()는 메모리에서 원하는 만큼의 메모리를 할당 받을 수 있다.
malloc 함수의 리턴값은 메모리 할당이 성공했을 경우 그 메모리의 첫번째 주소값이고
만약 실패하였을 경우, NULL 값을 리턴한다.
그러므로 메모리의 일정한 영역을 malloc()을 이용해 할당 받기 위해서는 메모리 주소값을
저장할 수 있는 포인터 변수가 필요하다.

할당 받은 메모리의 사용이 끝난다면 컴퓨터에게 메모리를 반환하여야 한다.
만약 free()를 이용하여 할당 받은 메모리를 반환하지 않는다면 운영체제는 그 메모리를 사용 할 수 없게된다.
이런 반환되지 않는 메모리들이 많다면 메모리 부족으로 컴퓨터가 다운 될 수도 있다.