Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
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 27
28 29 30 31
Tags more
Archives
Today
Total
관리 메뉴

Hello Security World

C언어 [C언어 동적 메모리 할당 예제] 본문

프로그래밍/C

C언어 [C언어 동적 메모리 할당 예제]

프로앱등이 2020. 5. 3. 20:32

C언어 동적 메모리 할당

 

예제1) 동적 메모리 할당 구현하기.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
#include <stdlib.h>
//동적 메모리 할당 구현하기 
int main()
{
    int* pi; 
    pi = (int *)malloc(sizeof(int)); //malloc -> 동적 메모리 할당 
    
    if(pi == NULL//동적 메모리 할당에 실패하면 NULL을 반납함 
    {
        printf("동적 메모리 할당이 실패 하였습니다.");
        exit(1);    
    } 
    *pi = 100;
    printf("%d\n",*pi); 
    free(pi); //반드시 FREE 를 사용하여 동적 메모리 할당 헤제 
    
    return 0;
}
 
 

 

예제2) 소문자 a~z 를 동적할당을 이용하여 대입하기.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <stdio.h>
#include <stdlib.h>
//동적 메모리 할당 danamic memory allocation 예제 2) 
//소문자 a~z 를 동적할당을 이용하여 대입하기 
int main()
{
    char* pc = NULL//pointer char 변수 초기화
    int i;
    pc = (char*)malloc(sizeof(char* 100);  // 동적 메모리공간 1byte 크기 100개 할당
    
    if(pc == NULL// 동적 메모리 할당이 실패하면 NULL 을 반납함 
    {
        printf("동적 메모리 할당 실패"); 
    } 
    for(i=0;i<26;i++)
    {
        *(pc+i)    = 'a' + i; //자동 형 변환을 이용하여 'a' 의 값 == 97 을 i의 값 만큼 증가시킴 a~z대입 
    } 
    *(pc+i) = NULL// %s포맷의 끝을알려주기 위한 과정 
    printf("%s",pc);
    free(pc); //동적 메모리 할당 해제  
실행결과
abcdefghijklmnopqrstuvwxyz
 
 

 

예제3) 정수 대입하기

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
27
28
29
30
31
32
33
#include <stdio.h>
#include <stdlib.h>
//동적 메모리 할당 danamic memory allocation 예제 3) 
//정수 5개 처리하기 
int main()
{
    int i,num;
    int* pi;
    
    pi = (int*)malloc(sizeof(int* 5); //4byte 공간 5개 동적 메모리 할당.
    
    if(pi == NULL//동적 할당이 실패하면 NULL을 반납함 
    {
        printf("동적 할당 실패");    
    } 
    for(i=0;i<5;i++//pi가 가르키는 값에 i를 대입 
    {
        *(pi+i) = i;
    }
    for(i=0;i<5;i++)
    {
        printf("[%d]",*pi+i); //pi 가 가르키는 '값' 출력  ***포인터 표기법*** 
    }
    printf("\n");
    for(i=0;i<5;i++)
    {
        printf("[%d]",pi[i]); //pi[i] 인덱스로 접근하여 출력 ***배열 표기법*** 
    }
    free(pi); //동적 할당 해제 
}
실행결과
[0][1][2][3][4]
[0][1][2][3][4]