그건 그렇고, 나는 reserved_size에 대해 정확하게 추론하지 못했습니다. 결국 이것은 예비비를 변경하는 단계일 뿐이지 예비비 자체는 아닙니다. 저것들. 그것은 아마도 어디에도 저장되지 않을 것입니다. 그러나 할당된 메모리 의 총 크기는 알려져 있습니다. 여기서 우리는 그것을 어떻게든 알고 이상적으로는 직접 관리하고 싶습니다.
그리고 ArrayResize에 대한 제안을 다음과 같이 재구성할 것입니다. Reserve_size=-1을 설정할 때 크기 매개변수가 이 범위 내에 있는 경우 함수는 배열에 할당된 메모리 크기를 변경해서는 안 됩니다. 크기 > 용량이면 버퍼가 저절로 증가합니다.
현재 0이 그렇게 작동하지 않습니까?
음, 이론적으로 이것은 제로 예비를 의미합니다. 그리고 여분의 메모리는 아마도 재활용될 것입니다. 일반적으로 여기에는 많은 모호성이 있으며 이를 확인하고 작업을 최적화하기 위해 배열에 할당된 메모리 의 실제 크기를 알 수 없습니다.
설명을 제대로 기억한다면 명시적으로 더 작은 숫자를 주어도 예비 크기는 줄어들지 않을 것이다.
옳지 않다. 도움말의 예제로 판단하면 0은 실제로 0처럼 작동하고 -1에 대한 제안은 매우 논리적입니다.
그리고 ArrayResize에 대한 제안을 다음과 같이 재구성할 것입니다. Reserve_size=-1을 설정할 때 크기 매개변수가 이 범위 내에 있는 경우 함수는 배열에 할당된 메모리 크기를 변경해서는 안 됩니다. 크기 > 용량이면 버퍼가 저절로 증가합니다.
예비 작업 논리(조건부 코드):
배열("내부") 은 배열이 할당된 요소 수 아래에 할당된 저장합니다.
예비 작업 논리(조건부 코드):
알았어 고마워. 그리고 맨 처음에 할당된 이 값은 -1과 같습니까? 아니요? 저것들. ArrayResize(arr, 0, 100)에 대한 초기 호출에 할당이 있습니까?
그리고 맨 처음에 할당된 이 값은 -1과 같습니까? 아니요?
저것들. ArrayResize(arr, 0, 100)에 대한 초기 호출에 할당이 있습니까?
배열의 크기가 위쪽으로 변경되는 경우에만 할당이 발생합니다. 이 경우 배열의 크기는 변경되지 않습니다. 그것은 0과 동일했다
차이점은 첫 번째 경우에는 오류가 없다는 것입니다 :)