언어 자료구조 알고리즘/C11 표준 라이브러리 함수

free 함수 [C언어 표준 라이브러리 함수 사용법 가이드]

언제나휴일 2016. 1. 3. 15:42
반응형

free


헤더 파일

[언어 자료구조 알고리즘/C11 표준 라이브러리 함수] - stdlib.h


void free(void *ptr); 동적으로 할당한 메모리 해제
 
입력 매개 변수 리스트
ptr 동적으로 할당한 메모리 주소
반환 값
없음
 
free 함수는 동적으로 할당한 메모리를 해제하는 함수입니다.
동적으로 할당한 메모리는 부분적으로 해제할 수 없습니다.
따라서 프로그램에서는 동적으로 할당한 메모리 주소를 기억해 두었다가 더 이상 사용하지 않을 때 free 함수로 해제합니다.
만약 동적으로 할당한 메모리의 크기를 변경하기 원하는 realloc 함수를 사용합니다.
 
사용 예
//C언어 표준 라이브러리 함수 사용법 가이드
//void free(void *ptr); 동적으로 할당한 메모리 해제
//정수형 변수의 주소를 포인터 변수로 사용 및 동적 메모리 할당하여 사용하는 코드
//정수형을 원소로 하는 배열을 포인터 변수로 사용 및 동적 메모리 할당하여 사용하는 코드
 
#include <stdlib.h>
#include <stdio.h>
 
int main(void)
{
    {//정수형 변수의 주소를 포인터 변수로 사용 및 동적 메모리 할당하여 사용하는 코드
        int i;
        int *p1, *p2;
        p1 = &i;//i 변수의 주소를 p1 변수에 대입
        *p1 = 7;//p1이 가리키는 곳에 7 대입
        printf("i: %d *p1:%d\n",i ,*p1);//확인       
        p2 = (int *)malloc(sizeof(int));//int 크기의 메모리를 동적 할당
        *p2 = 7;//p2가 가리키는 곳에 7 대입
        printf("*p2: %d \n", *p2);//확인
        free(p2);//동적으로 할당한 메모리 해제
    }   
    {//정수형을 원소로 하는 배열을 포인터 변수로 사용 및 동적 메모리 할당하여 사용하는 코드
        int arr[10];
        int *base, *base2;
        int asize, i;
        base = arr;
        //base와 인덱스를 이용하여 값 설정
        for(i=0;i<10;i++)
        {
            base[i] = i+1;
        }
        //arr과 인덱스를 이용하여 값 확인
        for(i=0;i<10;i++)
        {
            printf("%d ", arr[i]);
        }
        printf("\n");       
        printf("동적으로 할당할 개수를 입력 : ");
        scanf_s("%d",&asize);
        base2 = (int *)malloc(sizeof(int)*asize);//int 형식 크기 * asize 만큼의 메모리 동적 할당       
        //base2와 인덱스를 이용하여 값 설정
        for(i=0;i<10;i++)
        {
            base2[i] = i+1;
        }
        //base2와 인덱스를 이용하여 값 확인
        for(i=0;i<10;i++)
        {
            printf("%d ", base2[i]);
        }
        free(base2);//동적으로 할당한 메모리 해제
        printf("\n");
    }
    return 0;
}
 
출력
i: 7 *p1: 7
*p2: 7
1 2 3 4 5 6 7 8 9 10
동적으로 할당할 개수를 입력 : 10(입력)
1 2 3 4 5 6 7 8 9 10



사용한 함수

[언어 자료구조 알고리즘/C11 표준 라이브러리 함수] - printf

[언어 자료구조 알고리즘/C11 표준 라이브러리 함수] - scanf_s

[언어 자료구조 알고리즘/C11 표준 라이브러리 함수] - free


관련 함수

[언어 자료구조 알고리즘/C11 표준 라이브러리 함수] - calloc

[언어 자료구조 알고리즘/C11 표준 라이브러리 함수] - realloc

반응형