1) アプリケーションの終了時にすべてのシステムがメモリを解放するわけではありません。もちろん、最新のデスクトップ システムのほとんどはこれを行うため、Linux または Mac (または Windows) でのみプログラムを実行する場合は、割り当て解除をシステムに任せることができます。
2) 多くの場合、メモリを解放するだけでなく、終了時にデータを操作する必要があります。そのため、最後に手動でオブジェクトの割り当てを解除するのが困難なようなプログラム設計を開発しようとすると、後で終了する前にいくつかのコードを実行する必要があり、困難な問題に直面する可能性があります。
2') 場合によっては、プログラムが機能しなくなるまでいくつかのオブジェクトが必要になると考えていても、後でプログラムからライブラリを作成したり、プロジェクトを変更して大きなオブジェクトをロードおよびアンロードしたり、プログラムの設計が貧弱になったりすることがあります。これを困難または不可能にします。
3) さらに、プログラムの割り当て解除のパフォーマンスは、プログラムで使用する予定のアロケーターの実装に依存します。システムの割り当て解除は、システムのメモリ管理に依存し、単一のシステムでも複数の実装が存在する可能性があります。したがって、割り当て/割り当て解除のパフォーマンスの問題に直面している場合は、システムに期待するよりも、より優れたアロケーターを開発したいと考えています。
4)私の意見は次のとおりです。最後に手動でメモリの割り当てを解除すると、常に正しい方向に進んでいます。これを行わないと、場合によってはあいまいな利点が得られる可能性がありますが、遅かれ早かれ問題に直面する可能性があります。