Excel VBA 質問スレ Part37 [転載禁止]©5ch.io
■ このスレッドは過去ログ倉庫に格納されています
0233デフォルトの名無しさん
2015/06/26(金) 21:50:53.62ID:6WgjR2Fvメモリ上には3つの領域が存在しているのはご存知だろうか。
変数の値や関数の戻りアドレス、インスタンスの入ったアドレスなどを格納しているスタック領域、
標準モジュールの内容やクラスの型を格納しているスタティック領域、
クラスのインスタンスを格納しているヒープ領域の3つ。
この内、スタック領域は頻繁に値のやり取りが行われる場所であり、大きな容量を扱うものには向いていない。
頻繁にやり取りが行われるその領域にそれだけ負担が掛かるからだ。
属に言う値型のものがここに格納される。
つまり、比較的大きなクラスで扱うようなものはこの領域には向かないということだね。
では参照型はというと、そのインスタンスの参照先のみをスタック領域に保持し、インスタンスそのものはヒープ領域に展開される。
つまり、大きいのはそんなに頻繁にアクセスするようなとこに置いとくなよと言うこと。
だから、構造体を持つような言語ではMSDNでもよく小さいのは構造体で、ある程度大きいのはクラスで作れと書いてある。
どの程度の大きさだったかは忘れたけど。
そもそも論として、参照型と値型の峻別を付ける付けないではなく、そう言った根本的な違いがあるので、
設計するとき対象物をどちらで作るかの
峻別が必要になると言うこと。
多分、C++などはその辺を考慮したかたちになっておらず、作り手の判断に委ねられているんだろうな。
だからより高度な判断が必要で、逆に言えば理解が無ければ処理が無駄に遅くなるコードを組むことになる。
■ このスレッドは過去ログ倉庫に格納されています