C++ローカル変数、グローバル変数の役割ドメインおよび範囲&ダイナミックメモリ管理

1983 ワード

ここでは、C++のローカル変数、グローバル変数、動的メモリ管理の変数について説明します.本明細書では静的変数staticには触れないので、説明した観点にはstatic変数は含まれない.
ローカル変数とグローバル変数
ローカル変数は一般的に関数内部のローカル変数を指し、この部分の変数はスタックに保存され、関数呼び出しが終了すると、これらのローカル変数は自動的に解放されます.この部分の変数はシステムが自動的に管理していると言える.
グローバル変数またはfile scopeの変数です.この変数の一部はグローバル/静的ストレージ領域に格納され、この変数の役割ドメインは宣言ポイントからファイルの末尾まで表示され、ライフサイクルもプログラムの終了を知っています.
ダイナミックメモリ管理
関数ローカル変数でもfile scope変数でもシステムによって自動的に管理され、3番目のストレージ形式の変数dynamicもあります.
dynamicメモリは、newキーによって割り当てられ、deleteキーによって解放されるプログラムの空き領域によって割り当てられるheap memoryである.
新式の形式は次のとおりです.
new Type;
  
new Type(init_value)

Typeは任意の内蔵データ型であってもよいし,プログラムが知っているclass型であってもよい.例:
int *p;
p = new int
  
int *pi = new int(1024);

detele式の使用方法は、次のとおりです.
delete variable;

たとえば
delete p;

配列オブジェクトのdeleteには、deleteと変数の間に[]を付ける必要があります.たとえば、
delete [] arr

注意:deleteを行うときは、空のcheckを手動で行う必要はありません.コンパイラがcheckをしてくれます.
newで生成されたスタックオブジェクトは、手動でdeleteを行わないと常に存在し、メモリリーク(memory leak)を引き起こす.