C에서 동적 할당 후 배열 크기 결정
C에서 new 연산자를 사용하여 동적으로 할당된 배열은 본질적으로 프로그래밍 방식으로 크기를 노출하지 않습니다. 이 질문은 메모리를 효과적으로 할당 해제하기 위해 delete[]가 할당된 배열의 크기를 인식해야 한다는 관찰에서 발생합니다.
왜 배열 크기를 얻기 위한 내장 함수가 없나요?
sizeof()를 사용하여 크기를 결정할 수 있는 스택에 선언된 배열과 달리 동적으로 할당된 배열의 크기는 컴파일 중에 알 수 없습니다. 이는 컴파일러가 아닌 런타임이나 운영 체제의 메모리 관리자가 할당된 메모리를 관리하기 때문입니다. sizeof()는 컴파일 타임 상수로 작동하며 동적으로 할당된 배열의 크기를 동적으로 평가할 수 없습니다.
대체 전략
C가 내장된 배열을 제공하지 않더라도 배열의 크기를 얻기 위한 함수에는 다른 접근 방식이 있습니다:
int *arr = new int[256]; int *p = &arr[100]; int size = p - arr; // Subtracting pointers yields the size
의미
C 스템에서 동적으로 할당된 배열의 크기를 결정하는 표준화된 방법이 부족합니다. 메모리 관리 유연성과 플랫폼 독립성에 초점을 맞춘 언어입니다. 특정 시나리오에서는 한계가 있지만 다양한 구현 전략과 최적화 기회도 허용됩니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3