malloc : 라이브러리에서 제공하는 메모리 할당 함수, free(변수명) 으로 할당 내용을 해제한다.

 - 형태 : void *malloc(size_t size), 반환형 : *void 메모리공간

  + 예 : int a = (int*)malloc(50 * sizeof(int));  

 - int형의 자료가 50개가 들어갈 공간을 확보, a[0~49]의 인덱스로 접근가능

 - 프로그램 실행 중에 메모리를 할당받는 동적 메모리 할당 함수

new : 변수나 함수 객체의 생성자를 자동으로 호출하는 연산자, delete로 해제한다.

malloc new
라이브러리가 제공하는 함수

프로그래밍 언어가 제공하는 연산자
 - 오버로딩 가능

 필요한 메모리 양을 바이트 단위로 지정하고 void*를 리턴
 - sizeof 연산자와 캐스트 연산자의 도움이 필요하다.
 - void를 리턴 다양한 형식(char, int 등)에 적용되어야 한다.

 타입을 지정하고 해당 타입의 포인터를 리턴한다.
 - 할당한 타입과 같은 타입의 포인터 변수로 대입만 받으면 된다.

 메모리 할당이 목적, 초기값 할당 불가
 - 다른 예로 calloc 함수는 malloc 처럼 메모리 할당을 하는 점에선 같지만 모든 공간을 0으로 초기화한다.
 - calloc도 0으로 초기화 할 뿐이지 원하는 변수로 초기화는 불가

 할당과 초기화를 동시에 진행 가능
 - int a = new int(123);
 - int a = new int(); a = 123;
  + 같은 결과가 나온다.

오로지 메모리 공간 만을 할당
 - 생성자를 호출하지 않음

생성자를 자동으로 호출
 - 생성자 : 객체를 초기화하는 함수 

할당된 메모리는 크기 변경이 가능하다.
 - realloc으로 재할당 가능

재할당이 불가능하다.
 - 새로운 변수를 만들고 그 안에 원래 변수를 만들어 대체하는 식으로 재할당해야한다.
 - 재할당 할 때마다 메모리 번지가 바뀐다.

객체가 아니고 빈번하게 재할당을 한다면 malloc/free

 객체를 할당할 때에는 반드시 new  / delete
 - delete는 소멸자라고 불리우는 함수가 호출되어 삭제된다.

 

출처

https://wonjayk.tistory.com/252?category=535160

'게임 프로그래밍 > C++ 기초' 카테고리의 다른 글

std::weak_ptr  (0) 2020.03.03
std::shared_ptr 정의 및 문제점  (0) 2020.03.02
오버로딩 (Overloading)  (0) 2020.03.02
오버라이딩 (Overriding)  (0) 2020.03.02
C++ Map [STL]  (0) 2019.02.23

+ Recent posts