メモリを割り当てるために新しいキーワードを使用する以外に、C++でメモリリークを引き起こす原因は何ですか?私はプロジェクトを持っており、番組中にいくつかのメモリリークがあるようですが、私は新しいキーワードを一度使っていません。私が誤って数時間(4〜6)走ってしまったときも、CPUサイクルをゆっくりと飲み込んでいたのを見て戻ってきました。これがメモリリークの直接的な結果であったかどうかは分かりません私の利用可能なメモリのほとんどすべてを使用していたことを指摘してください)。プログラムを再起動するときには明らかに起こっていませんが、メモリリークがあります。 ありがとう!新しいものを使用する以外にメモリリークを引き起こす原因は何ですか? (C++)
0
A
答えて
1
それはA
vector
に追加し、ファイルハンドル、ソケットのようなオープンなリソースを閉め忘れ- アン増え続けるリストのような様々なものかもしれませんあなたが参照カウントされている場合は、サードパーティのライブラリでメモリリークが
- 循環参照
0
CPUとメモリを噛むさまざまな方法があります。
プロファイリングは、CPUを何が使用しているのかを見るのに最適なツールです。いくつかのロギングがある場合は、どこに時間を費やしているのかを知ることができます。
文字列はメモリ使用の犯人であり、驚くほど頻繁に使用されます。プログラムの開始付近(たとえばXML設定など)で大量のデータを読み込み、スコープ外に出さないようにすると、あなたが明示的にnew
に電話しなかったとしても、終了します。ハンドルを開いたままにする。データベース接続、ファイルなどもリソースを消費します。
参照や他の共有方法を使用しないと、データを簡単にコピーできます。
あなたが行っていることを測定し、そこから取得する簡単な方法を見つけることを試みてください。
0
mmap
ようmalloc
、realloc
またはcalloc
またはプラットフォーム固有の割り当て関数を使用して返されたポインタを失います。- 関数(おそらくコンストラクタ)を使用すると、メモリは割り当てられますが、対応するリリース関数は呼び出されません。たとえば、
SDL_Quit
を呼び出さずにSDL_Init
を呼び出します。 - 正しく使用してもメモリをリークするサードパーティ製のコードを使用する。
関連する問題
- 1. アクセス不能な例外を引き起こす原因は何ですか?
- 2. libzmq.dllでこのクラッシュを引き起こす原因は何ですか?
- 3. RescaleOpクラスを使用したJVMのクラッシュ - これを引き起こす原因は何ですか?
- 4. MySQLとHibernateを使用している「PROCEDURE schema.identity does not exist」を引き起こす原因は何ですか?
- 5. Flashビデオプレーヤーでディスプレイの破損を引き起こす原因は何ですか?
- 6. Laravel、CSRFのランダムなTokenMismatchエラーを引き起こす原因は何ですか?
- 7. この潜在的なメモリリークの原因は何ですか?
- 8. 例外を引き起こす原因は何ですか?HRESULT:0xC0C01B22フィルタを使用して送信ポートを登録しようとしていますか?
- 9. httpwebrequestの間に.docxファイルにこの破損を引き起こす原因は何ですか?
- 10. このエラーを引き起こすエミュレータ原因:java.lang.NoClassDefFoundError:
- 11. ソケットのsend()コマンドで "Resource temporarily unavailable"を引き起こす原因
- 12. 動的にロードされたライブラリがメモリリークを引き起こす原因を特定する方法
- 13. DurableInstancing.InstanceNotReadyExceptionを引き起こす原因は何ですか?どうすれば修正できますか?
- 14. これはリンクリストを使用してメモリリークを引き起こしますか?
- 15. iPhoneアプリの報告されていないクラッシュを引き起こす原因は何ですか?
- 16. PILのfromArray関数で次元依存のAttributeErrorを引き起こす原因は何ですか?
- 17. サーバーがURLRequestの破損を引き起こす原因
- 18. ".a"静的なlibが ".o"ファイルを要求するリンカエラーを引き起こす原因は何ですか?
- 19. このコードはメモリリークを引き起こしますか?
- 20. 次の例でメモリリークの原因は何ですか?
- 21. Wit.aiでストーリーを引き起こすものは何ですか?
- 22. この追加クラスはメモリリークの原因になりますか?
- 23. forループのメモリリークの原因は何ですか?
- 24. 本当ですか? IEコマンドを使用してVBAでこのエラーを引き起こす原因は何ですか?
- 25. このコードでNullリファレンス例外の原因は何ですか?
- 26. この例外の原因は何ですか?
- 27. ベクトルポインタvalgrindメモリリークを引き起こす
- 28. なぜこのコードはメモリリークを引き起こしますか?
- 29. この参照はメモリリークを引き起こしますか?
- 30. このコードブロックはメモリリークを引き起こしますか?
あなた自身が直接 'new'を呼び出すことはできませんが、あなたが他の人から呼び出す関数があるかもしれません。私たちはコードなしで知ることはできません。 –
メモリリークのデバッグでは、Valgrindを使用できます。 – ks1322