> 백엔드 개발 > C++ > `delete[]`는 할당 해제 중인 배열의 크기를 어떻게 알 수 있나요?

`delete[]`는 할당 해제 중인 배열의 크기를 어떻게 알 수 있나요?

Mary-Kate Olsen
풀어 주다: 2024-12-25 00:18:10
원래의
759명이 탐색했습니다.

How Does `delete[]` Know the Size of the Array It's Deallocating?

메모리 할당자가 삭제를 위한 배열 크기를 아는 방법[]

C에서 delete[] 연산자는 배열 할당을 해제하는 데 사용됩니다. 기억 속의 객체. 그러나 배열 크기를 명시적으로 요구하는 new[] 연산자와 달리 delete[]는 이 정보 없이 작동하는 것처럼 보입니다. 배열의 크기는 어떻게 결정합니까?

new[]를 사용하여 힙에 메모리를 할당하면 메모리 할당자는 배열 요소에 연속적인 메모리 블록을 할당하고 다음을 포함하여 할당에 대한 추가 정보를 저장합니다. 그 크기. 이 정보는 일반적으로 할당된 메모리 바로 앞의 헤더에 저장됩니다.

표준화

할당된 메모리로 배열 크기를 저장하는 방법은 C 자체에서는 표준화되어 있지 않습니다. . 다양한 메모리 할당자는 다양한 기술을 구현합니다.

  • 힙 메타데이터: 일부 할당자는 메모리 내 데이터 구조를 사용하여 배열 크기를 포함한 할당 세부 정보를 추적합니다. 이 데이터 구조는 할당자에 의해 관리되며 프로그램에 직접 표시되지 않습니다.
  • 메모리 헤더: 앞서 언급했듯이 많은 할당자는 배열 크기 및 기타 정보를 바로 직전에 헤더에 저장합니다. 할당된 메모리 이 헤더에는 일반적으로 실제 데이터와 구별하기 위해 고유한 태그나 플래그가 접두사로 붙습니다.
  • 특수 포인터 값: 일부 할당자는 끝을 표시하기 위해 배열 포인터에 특수 값을 사용할 수 있습니다. 배열의. 예를 들어 배열 할당이 완전히 취소되면 포인터가 null 포인터로 설정될 수 있습니다.

배열 크기 검색

삭제하는 동안 delete[] 연관된 헤더 또는 메모리 할당자에서 배열 크기를 검색합니다. 크기를 알면 delete[]는 객체 배열 전체를 효율적으로 할당 해제할 수 있습니다.

결론

요약하면 new[]에 의해 할당된 메모리는 객체에 대한 정보를 전달합니다. 힙 메타데이터, 메모리 헤더 또는 포인터 값을 통해 크기를 조정합니다. 이 정보는 delete[] 연산자가 할당 해제 중에 배열 크기를 결정하는 데 사용되므로 명시적으로 크기를 제공할 필요 없이 효율적인 메모리 관리가 가능합니다.

위 내용은 `delete[]`는 할당 해제 중인 배열의 크기를 어떻게 알 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿