c 언어 - 포인터, 배열 동적할당 pointer, array dynamic allocation


1차원 배열
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int main()
{
    int size;
 
    scanf("%d"&size);
 
    int *numPtr = malloc(sizeof(int* size);    // (int 크기 * 입력받은 크기)만큼 동적 메모리 할당
 
    for (int i = 0; i < size; i++)    // 입력받은 크기만큼 반복
    {
        numPtr[i] = i;                // 인덱스로 접근하여 값 할당
    }
 
    free(numPtr);    // 동적으로 할당한 메모리 해제
 
    return 0;
}
cs

2차원 배열
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>    // malloc, free 함수가 선언된 헤더 파일
 
int main()
{
    int **= malloc(sizeof(int ** 3);   // 이중 포인터에 (int 포인터 크기 * 세로 크기)만큼
                                           // 동적 메모리 할당. 배열의 세로
 
    for (int i = 0; i < 3; i++)            // 세로 크기만큼 반복
    {
        m[i] = malloc(sizeof(int* 4);    // (int 크기 * 가로 크기)만큼 동적 메모리 할당.
                                           // 배열의 가로
    }
 
    for (int i = 0; i < 3; i++)    // 세로 크기만큼 반복
    {
        free(m[i]);                // 2차원 배열의 가로 공간 메모리 해제
    }
 
    free(m);    // 2차원 배열의 세로 공간 메모리 해제
 
    return 0;
}
cs

출처 : c언어 코딩강좌

댓글