새소식

💻 Programming (프로그래밍)/C++

[C++] new, delete와 malloc(), free()의 차이는?

  • -

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로 만들어줍니다
    

}
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.