오류, 버그, 질문 - 페이지 1648

 
Alexey Navoykov :
현재 0이 그렇게 작동하지 않습니까?
 
Комбинатор :
현재 0이 그렇게 작동하지 않습니까?

음, 이론적으로 이것은 제로 예비를 의미합니다. 그리고 여분의 메모리는 아마도 재활용될 것입니다. 일반적으로 여기에는 많은 모호성이 있으며 이를 확인하고 작업을 최적화하기 위해 배열에 할당된 메모리 의 실제 크기를 알 수 없습니다.

 
또는 이것이 사실이라고 가정 해 봅시다. 첫 번째 ArrayResize (arr, 10, 100); 그런 다음 ArrayCopy(arr, arr2, 0, 0, 20); 어레이용으로 예약된 메모리의 크기가 감소합니까?
 
Alexey Navoykov :

설명을 제대로 기억한다면 명시적으로 더 작은 숫자를 주어도 예비 크기는 줄어들지 않을 것이다.

옳지 않다. 도움말의 예제로 판단하면 0은 실제로 0처럼 작동하고 -1에 대한 제안은 매우 논리적입니다.

 
그건 그렇고, 나는 reserved_size에 대해 정확하게 추론하지 못했습니다. 결국 이것은 예비비를 변경하는 단계일 뿐이지 예비비 자체는 아닙니다. 저것들. 그것은 아마도 어디에도 저장되지 않을 것입니다. 그러나 할당된 메모리 의 총 크기는 알려져 있습니다. 여기서 우리는 그것을 어떻게든 알고 이상적으로는 직접 관리하고 싶습니다.

그리고 ArrayResize에 대한 제안을 다음과 같이 재구성할 것입니다. Reserve_size=-1을 설정할 때 크기 매개변수가 이 범위 내에 있는 경우 함수는 배열에 할당된 메모리 크기를 변경해서는 안 됩니다. 크기 > 용량이면 버퍼가 저절로 증가합니다.
 
배열("내부") 은 배열이 할당된 요소 수 아래에 할당된 저장합니다.

예비 작업 논리(조건부 코드):
 ArrayResize (arr, int size, int reserve)
  {
   if (arr.allocated<size)
       if (!ArrayAllocateMemory(arr,size+reserve))   // -> arr.allocated=size+reserve;
         return (- 1 );
   //---
   CallConstructorsOrDestructors(arr,size);
   //---
   arr.size=size;
   return (size);
  }
 
Ilyas :
배열("내부") 은 배열이 할당된 요소 수 아래에 할당된 저장합니다.

예비 작업 논리(조건부 코드):

알았어 고마워. 그리고 맨 처음에 할당된 이 값은 -1과 같습니까? 아니요? 저것들. ArrayResize(arr, 0, 100)에 대한 초기 호출에 할당이 있습니까?

 
Alexey Navoykov :

그리고 맨 처음에 할당된 이 값은 -1과 같습니까? 아니요?

0과 같음
알렉세이 나보이코프 :

저것들. ArrayResize(arr, 0, 100)에 대한 초기 호출에 할당이 있습니까?

배열의 크기가 위쪽으로 변경되는 경우에만 할당이 발생합니다. 이 경우 배열의 크기는 변경되지 않습니다. 그것은 0과 동일했다

 
FVitalii Ananev :
차이점은 첫 번째 경우에는 오류가 없다는 것입니다 :)
두 경우 모두 C\C++에 오류가 없는 이유는 무엇입니까? (C\C++이 그것과 어떤 관련이 있는지에 대한 질문에 대한 답변, 위 참조)
 
허용된 주소 목록에서 URL을 제거하는 방법은 무엇입니까? 도움말에는 " 신뢰할 수 있는 목록에서 주소를 삭제하려면 해당 주소를 선택하고 "삭제" 버튼을 누르십시오"라고 되어 있지만 이 버튼은 없습니다.