Algorithm/[C] Do it! 자료구조와 함께 배우는 알고리즘
2-1장 기본 자료구조 - 배열 : 메모리 할당, 동적 객체 (3/10)
따`ddah
2024. 4. 12. 18:10
해당 내용은 Do it! 자료구조와 함께 배우는 알고리즘 입문 C 언어 편 (전면 개정판)을 기반으로 작성되었습니다.
2-1장 기본 자료구조 - 배열 : 메모리 할당, 동적 객체 (3/10)
// int형 객체를 동적으로 생성하고 해제
#include <stdio.h>
#include <stdlib.h>
int main(void){
int* x = calloc(1, sizeof(int)); // int형 포인터에 메모리 할당
if (x == NULL)
puts("메모리 할당에 실패했습니다.");
else {
*x = 57;
printf("*x = %d\n", *x);
free(x); // int형 포인터에 할당한 메모리 해제
}
return 0;
}
메모리 확보 함수 : malloc()
메모리 확보 함수 : calloc()
- 호출한 calloc 함수는 지정된 (1 *sizeof(int) 바이트)크기의 메모리를 힙 영역에 할당하고, 할당한 메모리의 첫 번째 주소를 반환한다.
메모리 해제 함수 : free()
- 프로그램을 실행하는 도중에도 원하는 시점에 변수를 생성하거나 제거할 수 있다.
- 해제한 영역의 크기를 자동 계산한다.
- free 함수 호출 시, 인수를 부여할 필요가 없다.
calloc(), malloc()와 free() 함수의 관계성
- 힙이라는 특별한 '빈 공간'에 기억 장소를 확보한다.
- 이때 확보한 메모리가 불필요하면 그 공간을 해제해야한다.
- calloc() malloc() 함수 선언 시, 무조건 free() 함수로 메모리 해제해야한다. ( 해제시 객체도 같이 사라진다)
동적 배열 / 객체 생성
객체 생성과 해제
- Type형의 단일 객체 *x의 생성과 해제
Type *x = calloc(1, sizeof(Type)); free(x);
- 요소가 Type형이고, 요소개수가 n인 배열 a의 생성과 해제
Type *a = calloc(n, sizeof(Type)); free(a);
int **p = calloc(10, sizeof(int *)); free(p);
728x90