>백엔드 개발 >C++ >`delete[]`는 배열에서 삭제할 요소 수를 어떻게 알 수 있나요?

`delete[]`는 배열에서 삭제할 요소 수를 어떻게 알 수 있나요?

Susan Sarandon
Susan Sarandon원래의
2024-11-27 19:46:11697검색

How Does `delete[]` Know How Many Elements to Delete from an Array?

delete[] 배열을 해독하는 방법

문제의 코드:

void deleteForMe(int* pointer)
{
     delete[] pointer;
}

포인터가 다음을 가리키지 않으면 정의되지 않은 동작이 발생합니다. 배열은 맹목적으로 delete[] 작업을 수행합니다. 그러나

int main()
{
     int* arr = new int[5];
     deleteForMe(arr);
     return 0;
}

과 같이 포인터가 배열을 참조하는 경우 OS는 지정된 배열 요소만 삭제하고 그 이상으로 진행하지 않는다는 것을 알고 있습니다.

이 동작의 핵심은 다음과 같습니다. C 호환 언어로서 C의 역사적 뿌리에 있습니다. 불필요한 오버헤드로 배열을 사용하지 않는 프로그래머에게 부담을 주지 않기 위해 delete[] 구문이 도입되었습니다.

다음과 같이 배열이 아닌 할당이 이루어진 경우:

Foo* foo = new Foo;

추가 없음 어레이 지원에 오버헤드가 발생합니다. 그러나 배열 할당의 경우 이러한 오버헤드가 존재합니다. 런타임 라이브러리가 이 정보를 사용해야 함을 나타내려면 프로그래머는 배열 포인터에 대해 delete[]를 지정해야 합니다.

따라서 delete와 delete[] 사이의 선택은 삭제되는 특정 할당에 따라 결정됩니다. 이를 통해 보다 세밀한 메모리 관리가 가능하며 C의 미니멀리즘 철학에 부합합니다.

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

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.