본문 바로가기
Develop/C++

[C ++] new와 delete연산자

by J-rain 2023. 2. 2.

연산자

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

댓글