본문 바로가기
프로그래밍/C,C++

동적할당

by Planetis 2014. 9. 12.

C의 할당과 해제

malloc 함수를 이용한 동적할당 방식

> 자료형 포인터 변수명 = (자료형 포인터) malloc(sizeof(자료형)*갯수);


free 함수를 이용한 동적 할당된 메모리 해제 방식

> free(동적 할당된 메모리 주소)


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <stdio.h>
 
void main(){
    int count, i;
 
    printf("사용할 숫자 배열의 길이:");
    scanf("%d", &count);
 
    int *pNumList = (int *)malloc(sizeof(int)*count);
 
    for(i=0; i<count; i++){
        printf("%d번째 정수:", i+1);
        scanf("%d", pNumList[i]);
    }
 
    printf("\n\n입력한 정수들:\n");
    for(i=0; i<count; i++){
        printf("%d ", pNumList[i]);
    }
 
    printf("\n");
 
    free(pNumList); // 동적 할당한 메모리 사용이 끝나면
    // 꼭 free 함수를 이용하여 할당한 영역을 회수하는 것이 매우 중요.
    // 이는 프로그램을 종료해도 메모리의 할당한 영역만큼을 재부팅 전까지 사용 할 수 없기 때문.
}

C++의 메모리 할당과 해제

new 와 delete 키워드를 사용한다.

 

할당 방식

자료형 *변수명 = new 자료형;

자료형 *변수명 = new 자료형[갯 수];

 

할당 실패시 new는 0을 리턴한다고 한다.

 

해제 방식

delete 변수명;

delete[] 변수명;

 

delete 키워드는 NULL 포인터에 사용되어도 어떤 일이 발생하거나 문제가 되지 않는다고 한다.


320x100

댓글