동적 메모리 할당이란?
- 컴퓨터 프로그램이 실행되는 도중인 런타임 도중에 사용할 메모리 공간을 할당하는 것.
malloc 함수
- 동적메모리 할당 함수
기초적인 이론에 관한 내용은 이정도만 하고
내가 공부하면서 헷갈렸던 부분 위주로 정리해보자면,
malloc 함수는 보통 다음과 같은 형태로 사용한다.
#include <stdlib.h> //malloc 함수가 포함된 헤더파일
typedef (자료형)element;
int main() {
element* a;
a = (element*)malloc(sizeof(element) * 원하는크기);
return 0;
}
우선 malloc 함수 앞에 (element*)는 형변환 연산자인데,
malloc 함수의 반환값은 (void*)이기 때문에
우리가 처음 지정해준 포인터 변수 a의 자료형으로 맞춰주는 작업을 수행한다.
이후 malloc 함수의 매개변수에 들어가는 값은 지정할 메모리의 크기이다.
이때 우리가 정수형 포인터 변수 a의 크기를 잡아주는 경우라면,
기본적으로 정수형 변수의 메모리 크기를 할당하고 → sizeof(int)
원하는 크기만큼 곱해주면 된다.
이때, sizeof 연산자의 반환 형태는 unsigned long long 형태이다.
정수로 생각하고 연산을 진행해도 되지만,
출력을 해줄 때는 "%ld"로 출력하는 습관을 들이자.
free 함수
#include <stdlib.h> //free 함수가 포함된 헤더파일
int main() {
int* a;
a = (int*)malloc(sizeof(int) * 100);
free(a);
return 0;
}
- malloc 함수를 이용해 잡아준 데이터를 다시 반환하는 역할을 한다.
- 필요가 없어진 데이터를 반환해줌으로써 memory leak 현상을 방지하는 것이다
- free 함수는 malloc 함수의 짝꿍이라고 기억하고, 습관화하면 좋을 것 같다.
'C언어 > 문법' 카테고리의 다른 글
[C] 표준 라이브러리 <stdlib.h> (0) | 2024.02.20 |
---|---|
[C] <stdio.h>의 표준 입출력 함수 (1) | 2024.01.15 |
[C] _CRT_SECURE_NO_WARNINGS (0) | 2024.01.15 |
[C] 포인터와 배열 간의 관계 (1) | 2024.01.11 |
[C] 포인터 (2) | 2024.01.11 |