malloc / new 특징 및 차이점
variable_name = ({type} *) malloc (sizeof ({type}));
str = (char *) realloc(str, 25);
{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
: 위와같은 기능이 없으므로 새로운 변수에 할당한 후 복사해준 다음 기존 변수를 지워야한다.
new
가 malloc
보다 더 빠르다.
new
가 연산자(operator
)로서 함수인 malloc
보다 빠르다.
malloc
: free
로 해제.
new
: delete
로 해제.