Q) new와 malloc() delete와 free()는 어떤 기능을 가지고 있을까요?
A) 동적 메모리 할당을 할 때 사용하는 기능으로 new와 malloc()은 사용할 메모리를 할당 해줄때, delete와 free()는 메모리를 다시 회수할 때 사용합니다.
Q) 그럼 new-delete 와 malloc()-free()의 차이점은 무엇일까요
A) new-delete는 연산자(operator)이고, malloc()-free()는 함수(function) 입니다.
new는 메모리의 데이터 형 혹은 객체를 넘겨주면 되는 반면
malloc는 메모리의 크기를 넘겨줘야합니다.
더 나아가 new와 delete는 클래스 생성시, 각각 생성자와 소멸자가 호출 됩니다.
++ 추가적으로 ++
동적할당은 Heap 영역의 공간만큼의 포인터를 내어 줘 공간을 빌려주는 개념입니다. 따라서 잘 쓰고 나면 반납도 잘 해줘야 하고, 그 포인터를 가르키는 변수도 댕글링포인터가 되지 않게 nullptr로 잘 처리해주면 좋습니다.
#include <iostream>
using namespace;
int main()
{
int *ptr = new int; // heap영역의 int크기 만큼의 영역을 빌림
delete ptr; // 사용한 후 반남해야합니다.
ptr = nullptr; // 이 ptr이 댕글링 포인터입니다. 이미 해제된 메모리를 가르키기 때문에 nullptr로 만들어줍니다
}