[C++] 메모리 동적 할당 (new, delete)
- Language/C , C++ , C#
- 2020. 1. 20.
C와 C++은 다른 개발언어와 달리 포인터를 사용하여 메모리를 직접 관리할 수 있다는 장점이 있습니다. C에는 malloc()과 free()라는 함수를 통해서 메모리를 할당하고 해제하였는데 C++에서는 new와 delete라는 연산자를 활용하여 메모리를 관리합니다. new는 malloc() 함수와 달리 메모리 크기를 정하지 않고 동적으로 할당합니다.
new와 delete 사용법
//메모리 할당 사용법
타입 *변수명 = new 타입; //메모리 할당
delete 변수명 //메모리 할당해제
#include <iostream>
using namespace std;
int main(){
int *point = new int; //메모리 동적할당
*point = 100;
cout << *point;
delete point; //메모리 할당해제
}
메모리를 설정하고 해제하는 방법은 위와 같습니다. 포인터를 설정하고 해제하는 방법은 C언어와 다르지만 포인터를 사용하여 동적으로 생성한 객체에 접근하는 방법이나 활용하는 방법은 C언어와 같습니다. 하나의 포인터는 위와 같이 설정해주면 되지만 배열 형태로 메모리를 설정해 준 것은 반드시 배열 형태로 메모리를 해제시켜주어야 합니다.
배열 형태의 메모리 할당 및 해제
//배열 형태의 메모리 할당 사용법
타입 *변수명 = new 타입[크기]; //배열 형태 메모리 할당
delete[] 변수명 //배열 형태 메모리 할당해제
#include <iostream>
using namespace std;
int main(){
int *point = new int[5]; //배열 형태 메모리 동적할당
for(int i=0; i<5; i++){
point[i] = i;
}
for(int i=0; i<5; i++){
cout << point[i] << endl;
}
delete[] point; //배열 형태 메모리 할당해제
}
위와 같이 배열 형태로 메모리를 설정해 준 것은 반드시 배열 형태로 메모리를 해제시켜주어야 합니다.
'Language > C , C++ , C#' 카테고리의 다른 글
[C언어] scanf 사용법 char형 문자 입력 시 공백 무시하기 (0) | 2020.08.25 |
---|---|
[C언어] scanf 사용법 int형 정수 한글자씩 입력받기 (0) | 2020.08.25 |
[C++] 입력문 / 출력문 (cin, cout) 사용법 & 예제 (1) | 2020.01.19 |
[C언어] Visual Stdio 2019 무료 설치 / 다운로드 (7) | 2019.08.02 |