new演算子を用いてメモリを動的に確保することができます


マックス「あ、あの・・・」


ソーラー「それでは


好きなタイミングで


メモリに格納されているデータを完全に消去できるよう


あらかじめメモリを確保


すなわち



      🌞動的にメモリを確保してみたいと思います🌞


そのためには


    

          🌞new演算子🌞



を用います


例えば


整数値データを格納できる32ビット=4バイト分のメモリを確保したいなら


aのint*型のポインタ変数宣言


int* a;


を実行し


(ポインタ変数名がaとなっていますがポインタ変数名は自由に決めて構いません)

そのポインタ変数aに


int型にnew演算子を作用させた


new int


を代入する


a=new int;


を実行します    」


マックス「


int* a;

のあとに

a=new int;


を実行する?


これは一体何がおこなわれているんだ?」



🌞    🌞    🌞    🌞    🌞    🌞    🌞 


う~ん newってみたことないけどかっこいい~~


🌞    🌞    🌞    🌞    🌞    🌞    🌞



ソーラー「


int* a;


a=new int;


が実行されると何が実行されるか


実は


とても簡単です



整数値データを格納できる32ビット=4バイト分のメモリを動的に確保したい


とします


メモリを確保したなら


もちろん好きなタイミングでその動的に確保されたメモリを解放し


そのメモリに格納された整数値データを消去することができます


int* a;


により


int*型のポインタ変数aを生成したのは


int型の変数のアドレスを格納するためです


ずっと前のエピソードで


int*型のポインタ変数aは


int型の変数のアドレスを格納することができるのを学んだよね」


マックス「それが


ポインタ変数宣言


int* a;


を実行したことの意味だとすると


a=new int;



int*型のポインタ変数aに


int型の変数のアドレスが代入されていたりして・・・な


にゃ( ̄∇ ̄;)ハッハッハ(´▽`*)



🌞    🌞    🌞    🌞    🌞    🌞    🌞 


マックスさん おもしろ~い


にゃ( ̄∇ ̄;)ハッハッハ(´▽`*)

 


🌞    🌞    🌞    🌞    🌞    🌞    🌞


ソーラー「う~ん、近いぃ


int型にnew演算子を作用させた


new int


が実行されると


32ビット=4バイトのデータを格納するint型に


対応した32ビット=4バイトのメモリが


確保されることになります


ただし


どのアドレスのメモリを確保するかを指定することはできません


そして


new int が実行されると


new int


には


その確保したメモリの


アドレスが戻り値として返されることになっています。


ですので


a=new int;


が実行されると


int*型のポインタ変数aには確保したメモリの


アドレスが代入されるというわけです。」


マックス「


int* a;


a=new int;


を実行しただけで


32ビット=4バイトのメモリが


確保されることになるのか?」


ソーラー「そうなんです


int* a;


a=new int;


を実行しただけで


32ビット=4バイトのメモリは


ばっちり


確保できています」


マックス「そして


このユーザーが確保したメモリは


コンピュータは使用できなくなるんだろう」


ソーラー「そうなんです。


何もしなければ


プログラムの実行中は


この確保したメモリを


解放してあげるまで


コンピュータはこの確保したメモリを使用することはできません


確保したメモリを解放しなくても


プログラムの実行が終了すれば


自動的に


確保したメモリは解放されることになります」


マックス「だが 動的にメモリを確保することにより


コンピューターが


この確保したメモリを利用できなくなっただけでは


意味がないんじゃないか」


ソーラー「そう、メモリを確保しただけでは


意味がないんです


動的にメモリを確保しただけでは


コンピュータがそのメモリを使用できなくなっただけです


つまり(*´▽`*)


コンピュータの使用できるメモリ容量が減っただけなんです(笑)



この確保したメモリに整数値データを


代入しておいて


そのデータを使用したのち


直ぐに


確保したメモリを解放して


メモリに格納された整数値データを消去することに意味があります


そうすることにより


コンピュータが使用することができるメモリの容量を再び


元に戻して容量を増やすことができるんだね


メモリを動的に確保しただけでは


コンピュータが使用できるメモリ領域が減っただけで意味がないんです」







  • Twitterで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る