c++

C++ 개인 필기(13) 동적 할당

Voitcon 2024. 2. 14. 18:32

HEAP -> 필요할대만 사용, 필요없으면 반낪

생성, 소멸시점 관리

동적 할당 : malloc, free / new, delete, /new[], delete[]

//유저 영역 (메모장 or 게임)(독립적 실행)

//커널영역 (운영체제의 핵심코드 실행)

//유저 영역 [   ] <-잘라서 사용 / 메모리를 크게 건내줌

//c++에서 기본적으로 CRT(런타임 라이브러리)의 힙관리자를 통해 힙 영역 사용

 

void *ptr=malloc(1000); - > malloc(sizeof(void ))를 통해 메모리 낭비 해결

->메모리 할당 후 시작 주소를 가리키는 포인터를 반환 (메모리 부족시 NULL)

 

void * ->포인터는 포인터, 포인터를 타고가면 뭐가 있는지 모르니깐 너가 적당히 변환해서 사용해라

-> Warrior *w1=(Warrior)ptr;

w1->xx 처럼 할당

malloc/free 세트 ->free(ptr) 하지 않을 시에 메모리 누수

힙 오버 플로우->유효한 힙 범위 추가 free() 여러번 선언시 더블 프리현상(크래쉬)

use after free ->free 뒤에 만약 사용하면 -> 바로 크래쉬가 나지 않고 엉뚱한 주소를 건든다.

 

new/delete -> 연산자

malloc/free -> 함수

사용 편의성 -> new/delete

타입에 상관없이 특정한 크기의 메모리 영역 할당 -> malloc/free

근본적인 중요한 차이 new/delete 는 (생성타입이 클래스인 경우) 생성자/소멸자를 호출해준다.

'c++' 카테고리의 다른 글

C++ 개인 필기(15완) 복사  (0) 2024.03.04
C++ 개인 필기(14) 변환  (0) 2024.02.26
C++ 개인 필기(12) static  (1) 2024.02.13
C++ 개인 필기(11) 클래스의 연산자  (0) 2024.02.07
C++ 개인 필기(10) 초기화 리스트  (0) 2024.02.06