블로그는 나의 힘!
[ Programing ]/C++2021. 11. 25. 15:16

1. 메모리 할당 해제 free / delete
Malloc과 New 둘 다 동적 메모리 할당을 위해 사용한다.
할당된 메모리를 해제하기 위해선
malloc -> free
new -> delete 로 메모리를 해제한다.


2. 초기화 가능 유무
Malloc은 초기화 불가능
New는 초기화 가능 (멤버 리스트 초기화)


3. 함수 / 키워드
malloc은 stdlib.h 제공 함수로 함수 콜이 요청됨
new는 C++에서 제공하는 키워드로 라이브러리 없이 바로 사용 가능


4. 생성자의 호출 유무
malloc은 바로 메모리를 할당하지만
new는 생성자를 호출한 뒤에 메모리를 할당한다. 그러기에 두번째 차이점처럼 초기화가 가능하다.



5. void* 메모리 할당.
malloc은 void*형 메모리 할당 해 준다.
void 타입이니 당연히 할당 메모리 사이즈 지정이 필요 하다.
void* 할당되면 사용할 타입에 맞게 해주면 캐스팅도 필요 하다.
new는 원하는 타입을 지정해 할당 하니 캐스팅이 필요 없다.


6. 재할당의 효율성 realloc
객체의 경우 new를 사용하는 편이 맞지만, 
재할당이 많이 일어날 예정인 경우는 malloc으로 동적 할당하는 경우가 나을 경우도 있다.

new로 할당 받은 공간은 realloc같은 함수가 없기에 다시 할당 해줘야 한다.
즉, 복사 -> 삭제 -> 할당 과정이 다시 일어난다.
하지만 malloc으로 할당 받은 공간은 realloc이라는 함수를 통해 재할당이 간단히 이뤄진다. (메모리만 다시 잡아준다.)




 

[출처] [C++] Malloc vs New 무슨 차이?|작성자 로켓다람쥐

 

로켓다람쥐 : 네이버 블로그

"모든 것은 가장 기본적인 것들로 이루어져있다!"

blog.naver.com

 

C++] malloc 과 new의 차이! : 네이버 블로그 (naver.com)

 

C++] malloc 과 new의 차이!

#delete #malloc #new #free 공통점으로는 서로 heap영역에 메모리를 잡아주는 역할을 한다. 즉, 동적할당...

blog.naver.com

 

 

'[ Programing ] > C++' 카테고리의 다른 글

C++ MiniDump Review  (0) 2022.01.21
Memory Access Violation - 메모리 접근 위반.  (0) 2022.01.19
MySQL C++ API / ODBC  (0) 2021.11.09
모두의 코드  (0) 2021.10.28
C++ Json Type 대입.  (0) 2021.10.25
Posted by Mister_Q