Visual Studio 2008アプリケーションでは、Windows XPではC++を使用しています。Windowsアプリケーションが多すぎるメモリを消費します。どんなアドバイスですか?
"常に新しいオブジェクトを削除する"アドバイス以外の有用なアドバイスはありますか?
編集:実際には、プログラミングに関するアドバイスを探しています。
Visual Studio 2008アプリケーションでは、Windows XPではC++を使用しています。Windowsアプリケーションが多すぎるメモリを消費します。どんなアドバイスですか?
"常に新しいオブジェクトを削除する"アドバイス以外の有用なアドバイスはありますか?
編集:実際には、プログラミングに関するアドバイスを探しています。
あなたは "あまりにも多くのメモリを消費します" によって何を意味するかによって異なります。
A)つまり、問題を引き起こすと予想される大きなデータ構造をロードまたは生成する必要があります。
この場合、ハードドライブがページの出し入れを開始するために物理メモリが多すぎるか、またはii)あまりにも多くのアドレススペースが必要です。つまり、穴が見つからないため割り当てが失敗します。想い出?
IIの)は、64ビットのビルド使用を検討し、断片化の用心、大規模なデータ構造を格納するための共有メモリを使用することを検討して - 小さいもの
Bに大きなデータ構造を壊す、早期に大きなバッファを割り当てる)それは使用することによって、あなたを驚かメモリの負荷。
あなたのリークやバグを見つけてください - さまざまなプロファイラが利用できます。また、ビジュアルスタジオにはdebug allocフックが組み込まれています。バッファサイズ(特に偶発的なラップアラウンド)を計算するための計算が壊れていますか?
スマートポインタを使用して削除を管理します。
メモリリークがあると仮定すると、他のプロファイルを購入/実行する前に問題を投げ捨てる無料のソリューションがあります。これはUMDHです。それがあなたの状況なら、ほとんどのメモリリークを検出できます。
今すぐ購入いずれか、またはメモリプロファイラを実行します。この種の状況に対して一般的な助言を与えるのは愚かです。あなたのメモリリークがどこにあるのか把握し、修正してください。 –
あなたの質問から、アプリケーションがメモリをリークしているのか、同時に多くのデータを同時にメモリに保存する必要があるため、メモリが多量に消費されたのかは明らかではありませんか? –
メモリはどこに行きますか?それは漏れているのか、実際に使われていますか? – sharptooth