공부/C++

malloc과 new의 차이점, free와 delete의 차이점

셩잇님 2023. 1. 18. 01:15
반응형

 

 

1. malloc과 new의 차이점

malloc()은 힙에 메모리를 할당하는 C/C++ 표준 라이브러리의 함수입니다. new는 힙에 메모리를 할당하는 C++의 연산자이지만 객체 초기화하기 위해 생성자를 호출하기도 합니다.

둘 사이의 주요 차이점은 malloc()은 메모리만 할당하는 반면 new는 객체도 초기화한다는 것입니다. 또한 malloc()은 올바른 유형으로 캐스팅되어야 하는 무효 포인터를 반환하고,  new는 올바른 유형에 대한 포인터를 반환합니다. malloc에 의해 할당된 메모리로 작업을 마치면 free()를 호출하여 메모리 할당을 해제해야 하는 반면 new의 경우 delete를 호출합니다.

 

2. free와 delete의 차이점

free()는 이전에 malloc()에 의해 할당된 메모리를 할당 해제하는 C 및 C++ 표준 라이브러리의 함수입니다. delete는 이전에 new에 의해 할당된 메모리를 할당 해제하는 C++의 연산자입니다.

둘 사이의 주요 차이점은 free()는 메모리 할당만 해제하는 반면,  delete는 메모리 할당을 해제하기 전개체의 소멸자를 호출한다는 것입니다. 또한 free()는 인수로 void에 대한 포인터를 사용하는 반면, delete는 이전에 new에 의해 할당된 개체에 대한 포인터를 사용합니다.

잘못된 함수나 연산자를 사용하면 메모리 누수나 프로그램 충돌과 같은 정의되지 않은 동작이 발생할 수 있으므로 올바른 함수나 연산자를 사용하여 메모리 할당을 해제하는 것이 중요합니다. 또한 저수준 시스템 프로그래밍에 좋은 수동 메모리 관리에 free 및 malloc이 사용된다는 점을 언급할 가치가 있습니다. 반면에 new와 delete는 자동 메모리 관리에 사용되며 사용이 더 편리하지만 오버헤드가 더 큽니다.

 

 

반응형

'공부 > C++' 카테고리의 다른 글

인터페이스(interface)의 개념  (0) 2023.01.25
추상 클래스(abstract class)의 개념  (0) 2023.01.24
new와 delete의 개념 및 차이점  (0) 2023.01.17
포인터(pointer)란?  (0) 2023.01.15
우선순위 큐(period_queue)의 개념  (0) 2023.01.13