[CS] malloc / new 특징 및 차이점

Onam Kwon·2022년 7월 13일
0

CS

목록 보기
2/22
post-custom-banner

malloc / new 특징 및 차이점

/* malloc */
variable_name = ({type} *) malloc (sizeof ({type}));
/* Reallocating memory example */
str = (char *) realloc(str, 25);

/* new */
{type} variable_name = new {type} (parameter_list); 

공통점

  • 메모리의 동적 할당을 위해 사용.

차이점

  • malloc: 함수.
  • new: 연산자(operator).
  • malloc은 바이트 단위의 사이즈를 인자로 받아서 사용 가능한 메모리 공간의 시작 주소를 반환한다.
  • malloc은 연속된 메모리를 가진 자료형(POD)에 대해서만 크기를 할당해 줄 수 있다. 이를 POD(Plain Old Data)라고 부른다.
    • C와 호환 가능한 타입으로서, char int float double 배열 및 포인터 등이 존재.
    • C++ 구조체 내부의 함수 선언. 즉, 함수를 포함한 클래스는 POD타입에 포함되지 않는다.
      • 만약 클래스가 생성자를 포함한 어떠한 함수라도 포함하고 있지 않다면 POD.
  • malloc: 실패시 NULL 반환.
  • new: 예외를 throw.
  • malloc: 메모리 공간을 동적으로 할당하는것이 목적이기 때문에 초기값을 지정해 줄 수 없다.
    • 따라서, 메모리 주소를 반환할때 기본적으로 쓰레기값을 반환한다.
  • new: 할당과 동시에 초기화가 가능하다.
    • 따라서, 생성자를 자동으로 호출한다. 생성자는 객체를 자동으로 초기화 하는 함수.
  • malloc: 라이브러리 제공 함수로 <stdlib.h>include 해야 한다.
  • new: 바로 사용 가능.
  • malloc: realloc이라는 함수로 재할당이 가능하다.
  • new: 위와같은 기능이 없으므로 새로운 변수에 할당한 후 복사해준 다음 기존 변수를 지워야한다.
  • newmalloc보다 더 빠르다.
    • new가 연산자(operator)로서 함수인 malloc보다 빠르다.
  • malloc: free로 해제.
  • new: delete로 해제.
profile
권오남 / Onam Kwon
post-custom-banner

0개의 댓글