1. malloc vs new
malloc은 free와 같이 사용하고, new는 delete와 같이 사용한다. 안한다고 해서 컴파일 오류가 나진 않는다. 다만 메모리가 좀 새는거밖에 더있나... ㅋㅋ (물론 진짜로 그렇게 코딩하면 '밥은 먹고 다니냐?'라는 질문을 받으실 수 있습니다.)
- 공통점 : heap영역에 메모리를 생성한다.
- 차이점
1) malloc/free는 객체의 생성자/소멸자를 호출해 주지 않는다. new/delete는 호출하여 준다. C++에서는 new/delete를 사용하는것이 좋다. 객체에다가 malloc/free를 해주면 Runtime Error!라는 친숙한 창을 만날 수 있다.
2) malloc/free는 라이브러리 제공 함수이고 할당하는 크기를 지정할 수 있다. new/delete의 경우 언어가 기본적으로 제공하는 연산자이다. 그리고 할당할 타입을 지정할 수 있다. new의 경우 연산자 오버로딩을 할 수 있다. 그리고 malloc으로 할당된 경우 realloc을 통한 재할당이 가능하지만, new는 그런거 없다.
*여담으로 C에서는 malloc / calloc이 있는데. 할당받은 메모리를 초기화 해주느냐 (calloc) 아니냐 (malloc)의 차이가 있다.
2. method vs function
1) method : 객체에 종속되어있다. 메소드도 멤버함수이므로 함수의 범위에 속한다.
2) function : 객체에 종속되어있지 않다.
반응형
댓글