본문 바로가기
Programming/Tips(C++,C#)

막상 생각하면 잘 생각나지 않는 new vs malloc

by 곰네Zip 2015. 11. 18.

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 : 객체에 종속되어있지 않다.

반응형

댓글