malloc과 new는 메모리를 동적으로(프로그램이 실행되는 중에) 할당받는 기능을 가지고 있습니다.

malloc은 C에서 사용하며, 표준 라이브러리 함수입니다. 그에 비해 new는 C++에서 추가된 '키워드(언어 자체의 기능)'입니다.

이렇게 할당받은 메모리는 반드시 해제해 주어야 하는데,

메모리를 굳이 해제해주지 않아도 프로그램(프로세스)가 종료되면 자동으로 운영체제에 의해 반환되기 때문에 요즘같이 엄청난 메모리 공간을 제공하는 환경에서 일반적인 응용 프로그램에서는 굳이 메모리 해제를 해주지 않아도 단지 실행 중 메모리 사용량이 다소 늘어날 뿐, 큰 문제는 없습니다.

그러나 백그라운드로 오래 돌아가는 프로세스나, 메모리를 동적으로 할당하고 해제하는 작업이 많은 거대한 프로그램의 경우 실행 도중 메모리가 부족해지는 경우가 많습니다.

사용하겠다고 할당받아놓고 해제하지 않으면 해당하는 메모리는 아무도 사용하지 못하니까요.

따라서 할당받은 메모리는 해제하는 것이 좋습니다.

그에 해당하는 것이 C에서는 free() 이며 C++에서는 delete([])입니다.

반드시 malloc은 free와, new는 delete와 사용해야 합니다.