エラー、バグ、質問 - ページ 1648

 
Alexey Navoykov:
今の0はそんなもんじゃないのか?
 
Комбинатор:
今の0はそんなもんじゃないのか?

一般に、そこでは配列に割り当てられたメモリの 実サイズを確認し、最適化することができないので、混乱することが多いのです。

 
あるいは、次のようなケースを考えてみましょう。 まずArrayResize(arr, 10, 100); 次にArrayCopy(arr, arr2, 0, 0, 20); アレイの予約メモリのサイズは小さくなるでしょうか。
 
Alexey Navoykov:

説明の記憶が正しければ、明示的に小さい数字を与えてもリザーブサイズは減らない。

間違っている。ヘルプの例から判断すると、確かに0は0として機能し、その後、-1の提案は非常に理にかなっています。

 
ところで、reserve_sizeについては、私の推理はあまり正しくありません。 実は、これはreserveの変更のステップに過ぎず、reserveそのものではありません。 つまり、どこにも保存されていないのでしょう。 しかし、割り当てられたメモリの 総サイズは分かっています。 何とかそれを知り、理想的にはそれを直接管理したいものです。

reserve_size=-1 を指定する場合、size パラメータがこの範囲内にあれば、関数は配列に割り当てられたメモリサイズを変更してはいけません。 size > capacity の場合、バッファはもちろん大きくなります。
 
配列("inside")には、その配列が 何個の要素に割り当てられて いるかが格納されます。

アロケートされたものを扱うロジック(条件分岐コード)です。
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:
配列("inside")には、その配列が 何個の要素に割り当てられて いるかが格納されます。

アロケート(条件付きコード)を使って作業するロジックです。

また、この値は最初に-1されるのでしょうか? つまり、ArrayResize(arr, 0, 100)の最初の呼び出しで、この値が割り当てられるのでしょうか?

 
Alexey Navoykov:

この最初に割り振られた値が-1なのか、そうでないのか?

イコール0
アレクセイ・ナヴォイコフ

ArrayResize(arr, 0, 100)が最初に呼ばれたとき、アロケーションは発生するのでしょうか?

アロケーションは,配列のサイズが 上向きに変化した場合にのみ発生します.この場合、配列のサイズは0に等しかったので、変わりません。

 
FVitalii Ananev:
違いは、最初のケースではエラーが発生しないことです :)
また、いずれの場合もC2C++でエラーが発生しないのはなぜですか?(C2C++と何の関係があるのか、その答えは上記をご覧ください)
 
信頼済みリストからURLを削除する方法を教えてください。ヘルプには「信頼済みリストからアドレスを削除するには、アドレスを選択して "Delete "ボタンを押してください」とありますが、そのようなボタンは ありません。