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 |