2010-12-03 5 views
0

メモリ管理C++が誰かが何をすることができますか?これは推測のように理論​​的に行われていますか?
iは論理設計イントロのコースを取り、それが数字とブール代数組み合わせ論理、意志このヘルプのシステムをカバー?
Visual Studioには、メモリを視覚化するためのツールがありますか、私はここでばかげていないと思いますか?
メモリ管理についてC++を言及する場合


ありがとうございます。

+2

からperfmon.exeと、Taskmgr.exeのおよび他の多くのツールのようなツールを使用して、メモリ管理の最初の最初の感触を得ることができますほとんどの質問は、ばかげていない^^(より良い尋ねると、必ず後でさらに馬鹿げて尋ねないと見えるよりも)。しかし、(私の意見では)あなたはあまり明確ではありませんが、あなたが知りたいことはVisual StudioでC++でメモリが漏れるのを監視する方法だと思いますか? –

答えて

3

C++は、メモリ領域の様々なています:関数呼び出しの際に、発信者のコンテキストを保存するために使われているコンパイラ

  • 「スタック」のメモリにより、事前に割り当てられているグローバル変数と静的変数のために使用さ

    • スペース、ローカル変数
    • newまたはnew[](C++の推奨アプローチ)またはmalloc(Cから継承した下位レベルの関数)を使用して割り当てられた "ヒープ"メモリを解放し、リリースされたいくつかの関数引数を渡します。 delete,delete[]またはfreeです。

    それはメモリの任意の量のための実行時の要求をサポートし、deleteまたはfreeが明示的にではなく、スタックごとに特定の関数呼び出しの寿命に縛られるよりも、使用されるまでの使用が解決しないことにヒープが重要ですメモリ。

    私は、実行中のC++プログラムの全体的なメモリ使用量を視覚化して分類するための有用なツールを知らず、ソースコード内のどのポインタに関連するメモリが現在どれくらいあるかを関連付けることはあまりありません。非常に一般的なガイドラインとして、プログラムが何かを指す準備ができているときだけポインタが導入され、ポインターがもはやポインターにならないときに範囲外に出るような方法でコードを書くことが奨励されています。実用的でない場合は、NULL(0)に設定すると便利です。そのため、デバッガで実行中のプログラムを監視している場合、その時点で正当なデータを指すポインタではないことがわかります。

  • 0

    Memory managementは、プログラミング中に簡単に視覚化できるものではありません。代わりに、プログラムが実行中にメモリを割り当てて解放する方法を指します。多くのデバッガは、実行中にプログラムを停止し、割り当てられた動的メモリに関する情報を表示する方法を提供します。適切なメモリ管理手法を使用してクラスとインターフェイスを計画することはできますが、「メモリ使用量のグラフではこのボタンを押してください」という単純なことではありません。

    thisのようなものを実装して、メモリ割り当てを追跡し、プログラムが解放しなかったことを警告することもできます。ガベージコレクタは、メモリ管理に関連するいくつかの面倒を解消します。

    +0

    Valgrind(http://valgrind.org/)のようなツールも役立ちます。 – bta

    0

    Visual Studioには、デバッグ中に実行しようとしている操作の有効なメモリ位置であれば、メモリを手動で読み書きできるメモリウィンドウ(Alt + 6)があります。Windowsプラットフォームで

    、あなたがsysinternals

    +0

    あなたはVS2010を置いているので、あなたはそれほどタグ付けしていませんが、私はWindows環境を想定しています – Chubsdad