SyntaxHighlighter.all();

1. 동적 메모리 할당의 개념

프로그램 실행 중에 필요한 만큼 메모리를 확보하여 사용하는 것을 메모리 할당이라고 한다.

또 사용이 끝나면 메모리를 반납하는 것을 메모리 해제라고 한다. 

 

이렇게 메모리를 할당받는 방법에는 크게 정적과 동적의 두 가지가 있다.

1 ) 정적 메모리 할당

정적 메모리 할당은 프로그램이 시작되기 전에 미리 정해진 크기의 메모리를 할당받는 것을 말한다.

프로그램 시작전에 메모리 크기를 아는 경우 사용하며 프로그램 실행 중에 크기가 변경될 수 없다.

ex )

1
2
3
4
5
6
7
#include<stdio.h>
 
int main(){
 
    int a[10];
    
    }
cs

 

 

 

2 ) 동적 메모리 할당

동적 메모리 할당은 프로그램 실행 중에 메모리를 할당받는 것을 말한다.

필요한 만큼의 메모리를 할당받아 사용할 수 있으며 사용이 끝나면 메모리를 반납해야된다.

-> 매우 효율적

 

 

동적 메모리 할당과 해제를 하기위해 사용하는 함수는 크게 3개다.

malloc(int size) : 메모리 할당

free(void *ptr) : 메모리 할당 해제 

sizeof(var) : 변수난 타입의 크기 반환

 

ex)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include<stdio.h>
#include<malloc.h>
 
int main(){
    int *ipt;
    int i;
    
    ipt = (int *)malloc(sizeof(int));
    *ipt = 123;
    
    printf("*ipt = %d, %u \n"*ipt, ipt);
    free(ipt);
    
    ipt = (int *)malloc(sizeof(int)*5);
    for(i=0;i<5;i++){
        ipt[i] = i+1;
        printf("ipt + %d = %u, %d\n", i, ipt+i, ipt[i]);
        }
        free(ipt);
    }
cs

 

 

 

 

'컴퓨터 과학 > 자료구조' 카테고리의 다른 글

[컴퓨터 과학 총론] 컴퓨터 과학 총론  (0) 2021.03.12
[자료구조] 5.포인터  (1) 2018.12.12
[자료구조] 4.구조체  (0) 2018.12.11
[자료구조] 3.배열  (0) 2018.12.11
[자료구조] 2. 순환  (1) 2018.11.29

+ Recent posts