기술문서/C++

C++ new / delete

오군_ 2023. 5. 22. 22:20
반응형
new / delete 연산자

C++에서 new 및 delete 연산자는 동적으로 메모리를 할당하고 해제하는데 사용된다.

 

 

 

new 연산자
  • new 연산자는 힙(heap)에서 동적으로 메모리를 할당한다.
  • 할당하려는 메모리의 크기에 따라 적절한 양의 메모리를 힙으로부터 요청한다.
  • new 연산자는 할당된 메모리의 주소를 반환한다.

 

 

delete 연산자
  • delete 연산자는 new 연산자에 의해 할당된 메모리를 해제한다.
  • delete 연산자는 메모리를 해제하기 전에 해당 객체의 소멸자를 호출한다.
  • 메모리를 해제한 후에는 해당 메모리 영역에 접근할 수 없게 된다.

 

 

new / delete 연산자 장점

개발자가 직접 메모리를 동적으로 할당하고 해제함으로써

메모리 사용을 조절할 수 있는 장점을 제공한다.

 

 

 

주의사항
  • 메모리 누수 : 

메모리를 할당한 후에는 반드시 해당 메모리를 해제해야 한다.

그렇지 않으면 메모리 누수가 발생하여 사용 가능한 메모리가 줄어들게 된다.

 

  • 이중 해제 :

이미 해제된 메모리를 다시 해제하려고 하면,

프로그램이 비정상적으로 종료될 수 있다.

  • 배열과 delete[] : 

배열로 할당된 메모리는 new[] 로 할당하고 delete[] 로 해제한다.

new[] 를 사용한 경우 delete를 사용하면 예기치 않은 동작이 발생할 수 있다.

 

 

 

C++11부터는 new / delete 대신에 스마트 포인터(std::shared_ptr, std::unique_ptr)

와 컨테이너(std::vector, std::array)등을 사용하여 메모리 관리를 보다 안전하고 편리하게

할 수 있습니다.

 

 

반응형
반응형