연산자
new와 delete는 C++에서 객체를 동적할당하고 해제하는 '연산자'이다.
만약 단일 인스턴스라면 다음과 형태로 사용된다.
형식 *변수이름 = new 형식;
delete 변수이름;
배열이라면 이렇게 사용한다.
형식 *변수이름 = new 형식[요소개수];
delete[] 변수이름;
new연산자의 특징중 하나는 "메모리 크기를 정하지 않는다" 라는점이다.
#include<iostream>
int main(int argc, char *argv[])
{
int *data = new int;
int *newdata = new int(10);
*data = 5;
std::cout << *data << std::endl;
std::cout << *newdata << std::endl;
delete data;
delete newdata;
}
실행결과
만일 동적으로 생성해야 할 인스턴스가 여러 개라면 배열 형태로도 생성이 가능하다!
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
int *arr = new int[5];
for(int i = 0; i < 5; ++i)
{
arr[i] = (i + 1) * 10;
cout << arr[i] << endl;
}
delete[] arr;
return 0;
}
실행결과
주의할점은 '배열 형태로 동적 생성한 것은 반드시 배열 형태를 통해 삭제' 해야한다.
new 연산자는 객체의 생성자를 호출하고, delete 연산자는 객체의 소멸자를 호출한다.
https://j-ra1n.tistory.com/entry/%EC%83%9D%EC%84%B1%EC%9E%90%EC%99%80-%EC%86%8C%EB%A9%B8%EC%9E%90
'Develop > C++' 카테고리의 다른 글
[C ++] 식별자 검색 순서 (0) | 2023.02.02 |
---|---|
[C ++] 템플릿(Template) (1) | 2023.02.02 |
[C ++] 다중 정의 (Overloading) (0) | 2023.02.02 |
[C ++] 범위 기반 for문 (0) | 2023.02.02 |
[C ++] auto (0) | 2023.02.02 |
댓글