동적 메모리 할당

동적 메모리 소유권

new로 얻은 메모리는 delete로 돌려주어야 하며, 소유자를 잃으면 누수와 잘못된 접근이 생깁니다.

할당

힙에 객체 생성

new는 요청한 타입의 객체를 만들고 그 주소를 포인터로 돌려줍니다.

new int
해제

사용 후 메모리 반환

delete는 new로 만든 단일 객체를, delete[]는 배열을 해제할 때 사용합니다.

delete p
실패

할당 불가 처리

메모리가 부족하면 예외가 발생할 수 있어 실패 경로도 고려해야 합니다.

bad_alloc
어려움

누수와 댕글링 포인터

해제를 잊거나 해제 후 다시 접근하면 프로그램 안정성이 크게 흔들립니다.

leak / dangling
배열 해제new[]로 할당한 메모리는 delete[]로 해제해야 생성된 요소들이 올바르게 정리됩니다.
중복 해제같은 주소를 두 번 delete하면 정의되지 않은 동작으로 이어질 수 있습니다.
현대 대안소유권이 필요하면 unique_ptr, 공유가 필요하면 shared_ptr 같은 스마트 포인터를 먼저 고려합니다.