🌻天国にいけるC++言語入門🌻 進化し続けるオブジェクト指向プログラミング ver3.2307
new演算子を用いてクラスの型のデータ格納容量分メモリを確保,データを格納し今度はdelete演算子を用いて動的に確保したメモリを解放してみたいと思います
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;
を実行しなくても
プログラムが終了すると
動的に確保したメモリは解放され
コンピュータは再び
動的に確保されていたメモリを使用できるようになります」
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます