예전/C, C++

[C/C++] malloc/free 와 new/delete

showmiso 2012. 10. 15. 19:55



malloc 과 new는 둘 다 메모리를 동적할당할 때 사용합니다.





(코드)



(결과)






이제부터 차이점을 볼게요!



1. malloc/free는 함수이고, new/delete는 연산자입니다.


malloc() 은 함수이기 때문에 C/C++에서 모두 사용가능하지만, new는 연산자이기 때문에 C에서는 사용할 수 없습니다.

동적할당시엔 반드시 메모리를 해제 해줘야하는데, malloc과 free가 세트이고, new와 delete가 세트입니다. !



2. new는 생성자, 소멸자를 호출하나, malloc은 그렇지 않습니다.


malloc()을 통해 class의 오브젝트를 동적으로 할당받으면, class의 생성자가 있다하더라도 자동으로 호출되지 않습니다. 하지만, new 연산자를 이용해 class의 오브젝트를 할당 받으면 class의 생성자가 호출됩니다.


그리고 free() 를 쓸 때도, 소멸자가 호출되지 않습니다. delete 할 때는 소멸자가 호출 됩니다.



new/delete가 생성자, 소멸자를 자동으로 호출해 주기때문에, C++에선 new/delete쓰는 편이 더 좋습니다.