new演算子を用いてクラスの型のデータ格納容量分メモリを確保,データを格納し今度はdelete演算子を用いて動的に確保したメモリを解放してみたいと思います

つづき・・・


ソーラー「さきほどは


クラスSuuti型のデータ格納容量8ビット分のメモリ


を動的に確保し


確保されたメモリに数値データを代入するプログラムを


実行してみました」


そのプログラムはこちらです

👇


#include <iostream>


using namespace std;


class Suuti{


public:


int x;

float y;


public:


void suutidisplay();


};


void Suuti::suutidisplay() {


cout << x << "\n";

cout << y << "\n";

}


int main() {


Suuti* a;


a = new Suuti;


a->x = 100;

a->y = 1.11;


cout << a->x << "\n";

cout << a->y << "\n";


return 0;


}


ビルド実行結果


100

1.11



ソーラー「new Suutiにより


クラスSuuti型のデータ格納容量8ビット分のメモリ


を動的に確保し


a = new Suuti;


a->x = 100;

a->y = 1.11;


を実行して


動的に確保されたメモリに


数値データ

100

1.11


を代入することができたところで


今度は


これらの動的に確保したメモリを解放して


動的に確保されたメモリに格納されている


数値データ

100

1.11

を消去し


ふたたび


コンピュータが


これらの動的に確保されていたメモリを


使用することができるようにしたいとおもいます


今のプログラムで


a=new Suuti;


により


動的に確保されたメモリを解放するには


動的に確保されたメモリの先頭のメモリのアドレスを格納した


ポインタ変数aに


delete演算子を用いた


delete a;


を実行します」


そのプログラムはこちらです

👇


#include <iostream>


using namespace std;


class Suuti{


public:


int x;

float y;

public:


void suutidisplay();


};


void Suuti::suutidisplay() {


cout << x << "\n";

cout << y << "\n";

}


int main() {


Suuti* a;


a = new Suuti;


a->x = 100;

a->y = 1.11;


cout << a->x << "\n";

cout << a->y << "\n";


delete a;


//🌞a = new Suuti;により動的に確保されたメモリを解放しました


return 0;


}


ビルド実行結果


100

1.11


マックス「ビルド実行結果は


先程のプログラムの


a = new Suuti;


を実行して


動的にメモリを確保したときと一緒だが


このプログラムでは


delete a;


により


動的に確保したメモリは解放され


コンピュータは再び


動的に確保されていたメモリを使用できるようになったというわけだ


ソーラー「まあ


delete a;


を実行しなくても


プログラムが終了すると


動的に確保したメモリは解放され


コンピュータは再び


動的に確保されていたメモリを使用できるようになります」

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

作者を応援しよう!

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

応援したユーザー

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

新規登録で充実の読書を

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

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

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