回答編集履歴
4
修正
test
CHANGED
@@ -19,3 +19,11 @@
|
|
19
19
|
|
20
20
|
|
21
21
|
基本的にオブジェクトのインスタンスは動的メモリ確保をするデータだと思ってください(何個生み出されるか実行前にわからないため)。
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
ゲームプログラミングはこのオブジェクトのインスタンスをよく使うことになり,それぞれを使う時には,そのオブジェクトが他のオブジェクトに使用されているかどうかという参照カウントという値を使用することが多いです。これはスマートポインタという仕組みがよく使われます。オブジェクトが生み出されて使われるごとに参照カウントを+1して,使い終わると値を-1減少させます。参照カウントが0になったらオブジェクトのデストラクタが起動するという仕組みになっています。
|
26
|
+
|
27
|
+
|
28
|
+
|
29
|
+
メモリの自動解放はこのような単純な仕組みになっていますのでメモリが解放できずに困った時は,自分で書いて直したりパフォーマンスを上げることもできるようになります。
|
3
補足
test
CHANGED
@@ -10,7 +10,7 @@
|
|
10
10
|
|
11
11
|
|
12
12
|
|
13
|
-
しかし,この保存したアドレスの値を消去したところで,そのアドレスが指し示しているメモリの場所は明示的に解放されないのです。もしこのメモリが解放されていないまま,プログラムを回し続けるともう使われていないデータが蓄積されてしまい,色々よくないことが起きます。なのでメモリを解放する処理をプログラムに書く必要があり,どのタイミングでメモリを解放すべきかということの理解がコンピュータのパフォーマンスを考える上で重要なのです。
|
13
|
+
しかし,この保存したアドレスの値を消去したところで,そのアドレスが指し示しているメモリの場所は明示的に解放されないのです。もしこのメモリが解放されていないまま,プログラムを回し続けるともう使われていないデータが蓄積されてしまい,色々よくないことが起きます(例えばメモリの使用率が100%を超えるとプログラムがクラッシュして実行中の処理が止まったりします)。なのでメモリを解放する処理をプログラムに書く必要があり,どのタイミングでメモリを解放すべきかということの理解がコンピュータのパフォーマンスを考える上で重要なのです。
|
14
14
|
|
15
15
|
|
16
16
|
|
2
表現の変更
test
CHANGED
@@ -10,7 +10,7 @@
|
|
10
10
|
|
11
11
|
|
12
12
|
|
13
|
-
しかし,この保存したアドレスの値を消去したところで,そのアドレスが指し示しているメモリの場所は明示的に
|
13
|
+
しかし,この保存したアドレスの値を消去したところで,そのアドレスが指し示しているメモリの場所は明示的に解放されないのです。もしこのメモリが解放されていないまま,プログラムを回し続けるともう使われていないデータが蓄積されてしまい,色々よくないことが起きます。なのでメモリを解放する処理をプログラムに書く必要があり,どのタイミングでメモリを解放すべきかということの理解がコンピュータのパフォーマンスを考える上で重要なのです。
|
14
14
|
|
15
15
|
|
16
16
|
|
1
補足
test
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
もしメモリが管理されていなかった場合PCは手当たり次第メモリにデータを書き込むことになり
|
1
|
+
もしメモリが管理されていなかった場合PCは手当たり次第メモリにデータを書き込むことになり書きむ場所に保存されているデータが存在していた場合そのデータは消えてしまいますよね。
|
2
2
|
|
3
3
|
|
4
4
|
|