기술문서/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)등을 사용하여 메모리 관리를 보다 안전하고 편리하게
할 수 있습니다.
반응형
반응형