素人ゲーム開発を垂れ流しつつ、覚醒に至るまでの記録や役立ち情報、愚痴を書くブログ。ちなみに前立腺の開発もやっている。
グローバル変数をヒープ領域で?
関数内での変数宣言はスタック領域と言うメモリ領域に、記録される。
その関数を抜けると自動消滅してしまいます。関数外で定義すると
グローバル変数となり静的領域に記録されます。しかし多すぎると
失敗してしまうそうで。
一度だけ実行される関数で宣言した場合、もちろんその変数の寿命
はその関数を抜けた時で、もしその変数の内容を他の関数に持って
行きたい場合はreturnで値を返すか(この時点でコピー)、グローバル
変数や関数の引数に変数のアドレスを渡し、代入するなどをする必要
がありますね。
自動消滅は変数管理に便利ですが、かといって要領の大きいサイズのグ
ローバル変数を何個も作ると、あまり宜しくない気がします。
そこでグローバルだけど静的領域ではなくヒープ領域に保存すれば積もる
事も無く記憶できる容量も多くなるのでは?という案が出ましたが・・・
ただ、このようなことは教本には載っていないので、実際に試してみる
しかないのでしょうね。実際に試したところ問題なく動作はしますが、
内部的にきちんと働いてくれているのかが気になりますね。アドレス
を見れば大体分かると思いますが、そのために試すのは面倒くさそうですw
例:
int *g_Val = new int();
果たしてどうなのでしょうかねぇ
?
その関数を抜けると自動消滅してしまいます。関数外で定義すると
グローバル変数となり静的領域に記録されます。しかし多すぎると
失敗してしまうそうで。
一度だけ実行される関数で宣言した場合、もちろんその変数の寿命
はその関数を抜けた時で、もしその変数の内容を他の関数に持って
行きたい場合はreturnで値を返すか(この時点でコピー)、グローバル
変数や関数の引数に変数のアドレスを渡し、代入するなどをする必要
がありますね。
自動消滅は変数管理に便利ですが、かといって要領の大きいサイズのグ
ローバル変数を何個も作ると、あまり宜しくない気がします。
そこでグローバルだけど静的領域ではなくヒープ領域に保存すれば積もる
事も無く記憶できる容量も多くなるのでは?という案が出ましたが・・・
ただ、このようなことは教本には載っていないので、実際に試してみる
しかないのでしょうね。実際に試したところ問題なく動作はしますが、
内部的にきちんと働いてくれているのかが気になりますね。アドレス
を見れば大体分かると思いますが、そのために試すのは面倒くさそうですw
例:
int *g_Val = new int();
果たしてどうなのでしょうかねぇ
?
PR
COMMENT
ブログ内検索
カテゴリー
最新記事
最新コメント
プロフィール
HN:
kawaハギ
年齢:
36
性別:
男性
誕生日:
1989/07/03
職業:
無職
趣味:
ゲーム 音楽
自己紹介:
人類を5次元意識へ押しあげる為のゲームを
開発しています。
小学生3年頃から鬱を発症。対人恐怖症、醜形恐怖等で引きこもり。
生きる意味を長らく探し求め、ようやく答えを見つけスピリチュアル
にたどり着く。覚醒を数段階体験し現在は”もう一度”物理的な自立を目指しています。
開発しています。
小学生3年頃から鬱を発症。対人恐怖症、醜形恐怖等で引きこもり。
生きる意味を長らく探し求め、ようやく答えを見つけスピリチュアル
にたどり着く。覚醒を数段階体験し現在は”もう一度”物理的な自立を目指しています。
カウンター