인가가 새로운 정의 배열의 크기를 알 수있는 기능 (즉,이 기록 될 수 있습니다) :배열의 크기가 new로 정의 되었습니까?
int *a=new int[3];
*a=4;
*(a+1)=5;
*(a+2)=6;
감사합니다!
인가가 새로운 정의 배열의 크기를 알 수있는 기능 (즉,이 기록 될 수 있습니다) :배열의 크기가 new로 정의 되었습니까?
int *a=new int[3];
*a=4;
*(a+1)=5;
*(a+2)=6;
감사합니다!
new
으로 할당 된 배열의 크기를 가져 오는 표준 방법은 없습니다.
배열 할당에 대한 더 나은 접근법은 이며, 이는 size()
회원을 가지며 범위를 벗어날 때 자동으로 정리됩니다.
짧은 대답 : 아니요.
대신 std::vector
을 사용하십시오.
이 기능을 작성할 수 있습니다. 그러나 현실 세계에서는 가난한 아이디어입니다.
new
을 호출하는 동작은 할당 된 배열의 요소 수 (또는 실제 할당의 크기 이상)를 저장하는 것이 가장 가능성이 있지만, 해당 정보를 방법은 특정 시스템에서 new
이 어떻게 작동 하는지를 알지 않고 코드를 다르게 컴파일하거나 (예 : 코드의 디버그 또는 릴리스) 컴파일러 (또는 런타임 라이브러리)의 버전 변경 등과 같이 변경 될 수 있습니다.
앞서 언급 한대로 std::vector
을 사용하는 것이 훨씬 좋은 방법입니다. 그 이유는 여러분이 다른 곳에서 배열을 해제하는 것에 대해 걱정할 필요가 없기 때문입니다.
어떤 이유로 든 std::vector
을 사용하고 싶지 않거나 교사에게 들려주고 싶지 않다면 할당 크기를 "기억"해야합니다.
참고 : 표시된 "중복"질문은 의미는 있지만 불완전한 질문은 관련이 있지만 다른 프로그래밍 언어 및 다른 할당 기능과 관련되어 있으므로 의미가 있습니다. – nobar