metadata 개념이 있다.
metadata에는 array에 몇 개의 element가 존재하는지 기록되어있다.
즉, stack에 있는 메모리 포인터가 얼마나 heap에 메모리를 할당하였는지 기록하고 있다고 볼 수도 있다.
그럼 metadata는 어디에 저장될까?
예시)
int* arr = new int[10];
라고 할 때, 10 개 정수를 저장 할 공간 외 metadata를 위한 추가 공간을 할당 한다.
meatadata는 new[]에 의해 반환 되는 memory address (heap) 의 앞부분에 위치하고 있다.
만약 delete[]에 의해 별도 정의한 class의 destructor가 불리는 상황이라면?
metadata에 적힌 element 수만큼 destructor가 불린다.
'C++' 카테고리의 다른 글
C++ 면접 질문) "언제 Reference를 쓰고 언제 Pointer를 써야 할까요?" (0) | 2025.01.06 |
---|---|
C++ 면접 질문) "C++에서 Reference 와 Pointer의 차이점은?" (0) | 2025.01.06 |
C++) 함수를 static으로 선언 declare 한다는 것 (0) | 2020.10.15 |
C++) check whether file exists 파일 존재 여부 확인 [access(2)] (0) | 2020.10.14 |
C++) static 멤버 변수 life cycle (0) | 2020.09.28 |