프로그래밍/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] |