0

質問に対する正確な答えが見つかりませんでした:

cstdlib を使用せずにメモリを再割り当てする唯一の方法は、メモリを解放して再度割り当てることですか? そうでない場合、可能な解決策は何ですか?

前もって感謝します。

4

2 に答える 2

1

おそらく、std::vector (または他のコンテナー) にメモリをロードし、すべての要素を削除し、clear を呼び出してメモリを解放し、その中に新しいアイテムを割り当てて、より多くのメモリを割り当てるときに、std::vector (または他のコンテナー) で行われることを意味しますか? この場合、コンテナ内のメモリが大きくなると、コンテナは必要に応じてメモリを再割り当てすることがあります。

あなたがVectorを作成していると述べたので:

ベクトル実装 (組み込み) がなかったためにこれを行う必要があったプロジェクトでは、一定のメモリ再割り当てを防ぐために、最初に必要な量よりも大きなメモリのセット チャンクを割り当てるのが一般的です。断片化。一般的なスキームは、アプリに「妥当な」サイズを割り当て、制限に達した場合はそのサイズを 2 倍にすることでした。ユーザーがバッファーのサイズを縮小するか、初期化時にサイズを設定するように要求した場合、このヒューリスティックは無視され、要求されたサイズが使用されます。

于 2013-04-19T23:31:28.240 に答える