malloc과 new의 차이

new는 객체의 생성자를 호출한다.

delete가 소멸자를 호출하는 것과 동일하다.

new는 객체에 대한 연산자이다.

malloc은 함수이다.

new는 오버라이딩이 가능하다.

연산자이므로 가능하다. malloc은 함수이므로 불가능하다.

new는 해당 type에 맞는 pointer를 반환한다.

malloc은 void pointer만을 반환한다.

new는 해당 type의 크기에 맞는 용량을 할당한다.

malloc은 크기를 계산해 주어야 한다.

new는 정의된 자유 공간에 할당할 수 있다.

스택(ex. alloca())일 수도 있고, 힙일 수도 있다. new는 자신이 할당될 위치를 부여 받을 수 있다. (이를 이용해 피닉스 패턴을 좀 더 안전하게 구현할 수 있다.)

malloc은 heap에 할당한다.

new는 실패 시 동작이 선택적이다.

nothrow가 설정된 경우 malloc과 같이 nullptr을 반환한다. 그렇지 않으면 throw를 한다.

댓글 남기기