C ポインタ 新しいページはコチラ

提供: yonewiki
移動: 案内, 検索
(ポインタ)
(ポインタ)
67行: 67行:
  
  
その問題を解決するのがnew演算子です。new演算子はポインタ変数の型と同じint型で、ポインタが指し示す先頭アドレスの生成と先頭アドレスからint型の分だけメモリ領域を確保し、ポインタ変数にアドレスを格納します。この結果アドレスの中身の方には名前がない状態ではありますが、ポインタ変数からでのみ操作できる変数が生成されたことになります。名もなき実体のアドレスをポインタ変数だけがしっているということです。delete演算子では、そうやって生成した名もなき実体のメモリ領域を解放することになります。もうここから先では使いません。どうぞご自由にという感じです。その宣言がされるまではずっとメモリ領域を確保し続けます。最近ではプログラムが終了したときに、このような手法でメモリ領域を確保した部分の解放処理をしてくれるようになりましたが、その昔、これを解放せずにプログラムが終わるという事態が多発していたのも事実です。使い終わったらいち早くかたずけることで資源を有効に利用できるのです。プログラム終了時に全部の片づけをやってくれてるのかは知りませんが…そういうことらしいです。<br />
+
その問題を解決するのがnew演算子です(new演算子はC++だけでしか使えないので、Cの場合はmallocというメモリ確保関数とunmallocというメモリ解放関数を駆使します。)。new演算子はポインタ変数の型と同じint型で、ポインタが指し示す先頭アドレスの生成と先頭アドレスからint型の分だけメモリ領域を確保し、ポインタ変数にアドレスを格納します。この結果アドレスの中身の方には名前がない状態ではありますが、ポインタ変数からでのみ操作できる変数が生成されたことになります。名もなき実体のアドレスをポインタ変数だけがしっているということです。delete演算子では、そうやって生成した名もなき実体のメモリ領域を解放することになります。もうここから先では使いません。どうぞご自由にという感じです。その宣言がされるまではずっとメモリ領域を確保し続けます。最近ではプログラムが終了したときに、このような手法でメモリ領域を確保した部分の解放処理をしてくれるようになりましたが、その昔、これを解放せずにプログラムが終わるという事態が多発していたのも事実です。使い終わったらいち早くかたずけることで資源を有効に利用できるのです。プログラム終了時に全部の片づけをやってくれてるのかは知りませんが…そういうことらしいです。<br />
  
  

2014年9月28日 (日) 00:00時点における版



個人用ツール
名前空間

変種
操作
案内
ツールボックス