image

stack에는 지역변수가 저장되고 stack의 경우 size가 작아서 메모리가 큰 array를 선언하면 stack overflow가 일어난다. 이러한 단점을 해결하기위해 heap의 메모리를 추가적으로 사용하게 되는데, 사이즈가 큰 대신 어디에 생길지 예상하기 힘든 단점이 있다. ptr을 delete해준 뒤에는 heap의 메모리를 os가 가져가서 뒤에 ptr을 dereference했을 때는 아무것도 안남게 되므로 ptr=nullptr과 같이 선언하고 사용해야 한다.

image

heap에 메모리를 할당해놓고 delete를 안하게 된다면 *ptr2는 initArray() 함수가 끝난 뒤에 사라지게 되는데 heap에는 메모리가 계속 할당되어 있어 메모리가 누수되는 현상이 발생한다.