[ C++ ] 동적 메모리 할당
동적 메모리 할당
1. 동적 메모리 할당 함수
C언어에서 malloc()함수를 이용해 원하는 크기의 메모리 공간을 확보 가능
Malloc() 함수는 메모리 할당에 성공하면 주소를 반환, 그렇지 않으면 NULL 반환
Malloc() 함수는
라이브러리에 정의
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>
int main(void) {
int*a = malloc(sizeof(int));
printf("%d\n",a);
// Malloc(할당할 바이트 크기);
*a = malloc(sizeof(int));
printf("%d\n", a);
system("pause");
return 0;
}
>>
423336
423336
전통적인 C언어에서는 스택에 선언된 변수는 따로 메모리 해제 필요 X
동적으로 할당된 변수는 반드시 free()함수로 메모리 해제
메모리 해제를 하지 않으면 메모리 내의 프로세스 무게가 더해져 차후 오류 발생
메모리 누수(Memory Leak) 방지는 코어 개발자의 핵심 역량
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int*a = malloc(sizeof(int));
printf("%d\n",a);
free(a);
*a = malloc(sizeof(int));
printf("%d\n", a);
free(a);
system("pause");
return 0;
}
2. 동적으로 문자열 처리
일정 범위의 메모리를 모두 특정한 값으로 설정하기 위해서는 memset() 사용
한 글자(바이트)씩 값을 저장하므로 문자열 배열의 처리 방식과 흡사
따라서 memset()함수는
라이브러리에 선언
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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void) {
char *a = malloc(100);
// memset(포인터, 값, 크기);
memset(a, 'A', 100);
for (int i = 0; i < 100; i++) {
printf("%c", a[i]);
}
system("pause");
return 0;
}
>>A 100개 출력
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.