상세 컨텐츠

본문 제목

malloc/free 와 new/delete의 차이점

C / C++

by 부레두 2023. 10. 12. 03:02

본문

1. malloc / free

  • C 언어의 동적 할당 및 해제 함수
  • 라이브러리가 제공하는 함수
  • 할당할 메모리의 양을 Byte 단위로 인자에 넘기고, void*를 리턴
  • 할당이 주목적이라 초기화가 불가능, 메모리 할당 후 초기화
  • malloc과 free는 오로지 메모리 만을 할당/해제
  • realloc을 통해 크기를 변경 가능

2. new / delete

  • 언어에서 지원하는동적할당 연산자
  • 할당하는 타입의 메모리만큼 동적 할당
  • 생성자 및 소멸자 자동 호출
  • 할당과 동시에 초기화 가능 ( 초기화 리스트를 이용해 초기화 )

3. 비교

malloc/free new/delete
메모리가 heap에 할당 메모리가 Free Store 할당
결과가 void*로 반환 명확한 타입으로 지정
할당에 실패하면 NULL을 반환 할당 실패 시 error를 throw
할당 시 사이즈 지정이 필요 컴파일러가 크기를 자동으로 계산
재할당 과정이 비교적 간단 재할당 과정이 비교적 복잡
함수 연산자

** Free Store :
new, delete로 할당, 해제되는 2개의 동적 메모리 영역 중의 하나

다만, 힙과 Free Store는 개념적인 것으로 같은 공간을 공간

관련글 더보기