'언어/C'에 있는 글 4개

  1. ▪ [C]메모리 동적할당(malloc) ....... 2018.01.26


728x90

동적할당이란?


프로그램이 돌아가는 도중에 메모리를 받는것을 말한다.


int[5] a; 이렇게하면 프로그램 실행전에 미리 메모리가 할당되고 종료해야지만 메모리가 해제 된다.


우리가 프로그램을 짜다보면 프로그램 안에서 메모리를 할당 받아야 되는 경우가 생기는데 그때 바로 malloc함수를 쓰면된다.


malloc함수를 쓸려면 stdlib.h 헤더파일을 인클루드 해야된다.


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

간단하게 이렇게 쓸수잇다.



보면 자료형 int의 포인터 변수를 선언하고, 거기다가 malloc함수로 메모리를 할당 받아서 그주소를 포인터 변수에 넣어 주는것이다.


불러오는 방법은 배열처럼 불러오면 되고 *(malloc_int + 1)이런식으로도 쓸수 있다.


동적할당은 free함수로 메모리 해제를 해줘야된다.


malloc함수를 잘보면 캐스팅을 하고 있다.  이렇게 캐스팅으로 변수형을 맞춰주고 뒤에 사이즈를 정해주는데 30*sizeof(int) 이렇게 쓰는이유는 int변수가 4byte이고(컴퓨터에따라 다를수있다.) 그걸 30개 받는것이다. 



'언어 > C' 카테고리의 다른 글

[C언어] 기본 입력함수  (2) 2017.06.08
[C언어] 기본 출력함수  (2) 2017.06.04
[C언어] 변수  (0) 2017.06.02