次の方法で共有


メモリ管理 : フレーム割り当て

ゾーンのアロケーションは、関数が呼び出されるたびに設定されている 「スタック フレーム」から名を取得します。スタック フレームは関数に引数を保留、または関数に定義されたローカル変数であるメモリの領域です。フレーム変数は、コンパイラが自動的にそれらの領域を割り当てるため、 「自動」変数と呼ばれます。

ゾーンのアロケーションの 2 種類の主要な特性があります。最初にローカル変数を定義するときには、十分な領域がスタック フレーム内の大きな配列またはデータ構造が全体の変数を保持できるようになりました。第 2 に、フレーム変数が自動的にスコープの外になったときに削除されます:

void MyFunction()
{
    // Local object created on the stack
    CString strName;
    // Object goes out of scope and is deleted as function ends
}

ローカル関数の変数には、このスコープの切り替えは、入れ子になった中かっこを使用すると、関数が終了し、フレーム変数のスコープは、関数よりも小さい場合があります場合に発生します。フレーム変数の自動この削除は非常に重要です。単純なプリミティブ型の場合には ( int か byteなど)、配列、またはデータ構造は、自動削除変数が使用するメモリをクリアします。変数がスコープ外になるため、常にアクセスすることはできません。ただし、 C++ のオブジェクトの場合は自動削除のプロセスが複雑です。

オブジェクトがフレーム変数として定義すると、コンストラクターが定義がある点に自動的に呼び出されます。オブジェクトがスコープ外に出ると、デストラクターが自動的にオブジェクトのメモリがクリアされる前に呼び出されます。この自動構築と破棄が非常に便利ですデストラクターに自動呼に、特に注意する必要があります。

ゾーンのオブジェクトを割り当てるキー長所は、自動的に削除されることです。ゾーンのオブジェクトを割り当てると、メモリ リークの原因に忘れたオブジェクトによりを気にする必要はありません。(メモリ リークの詳細については、技術情報 MFC のメモリ リークの検出を参照してください)。ゾーンのアロケーションの短所は、フレーム変数がスコープ外で使用できないことです。ゾーンのアロケーションのとヒープ割り当て選択のもう一つの要素は大きな構造体の場合で、スタック領域が頻繁に制限されているため、オブジェクト、ストレージにスタックではなくヒープを使用することをお勧めします。

参照

概念

メモリ管理