C : malloc()
C++ : new演算子
C/C++では上記を使って動的確保を行う事ができると思いますが・・・
動的確保をするメリットは何でしょうか??
可変長変数を作ることが可能ということでしょうか??
”動的確保”とういのが今一よく理解できないのですが・・・
どなたか教えてください!!!
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答4件
0
ベストアンサー
こんにちは。
epistemeさんの仰る通り、事前に決定する必要がないのでプログラムを使える範囲が広がります。
もし、コンパイル時に全ての領域を確保しておく必要があるようなプログラミング言語の場合、メモリを2GBytes搭載しているPCや4GBytes搭載しているPCなどなど毎に一々コンパイルしないと大きなメモリを使えません。
ユーザが単にバソコンのメモリを増やすだけではそのメモリを使えなくて、アプリをリビルドしないといけないとか、勘弁して欲しいですよね。
また、例えば、ユーザが使う際にA機能を使う場合とB機能を使う場合がそれぞれあり、かつ、両方同時に使うことがないとします。このような場合、A/B機能を起動した時点でそれぞれの機能が使う領域を動的に確保すれば、A/B機能の両方分の領域を確保しておく必要が無いのでメモリが少ないコンピュータでも使えます。ありがたい話です。
両方の例とも少し極端な話ですが、原理的にはこのようなことです。
【余談ですが】
しかし、動的確保最強と思っては行けません。事前に領域サイズを見積もれるケースでは逆に欠点にもなります。
例えば、組み込み系のソフトウェアの場合、メモリ搭載量は事前に決める必要が有ります。その際、プログラムが使用するメモリ・サイズを基準に決定しますが、使用量が良く分からない分、余裕を持ってメモリを搭載すると無駄に高いものになります。特に小型CPUは非常に痛いコストアップです。
投稿2016/07/13 03:24
総合スコア23272
0
動的確保ができない言語としてCOBOLがありますね。
アンケートのはがきを整理していた時の話ですが、家1軒あたりの処理で、
何枚来るかという問題にぶつかりました。
商品を買って応募してくるのだから、4人家族としても10個あればよいのでは?という
結論になってプログラムを作り、実行したところ、老人ホームと思える住所から
50枚来てもちろんプログラムは処理しきれずに異常終了しました。
じゃぁ、50にするか。といって処理はできましたが確保したメモリーは膨大なものになりました。
cでmallocができるというのは幸せなことです。100枚入でも200枚でも処理できるのですから。
投稿2016/07/13 04:05
総合スコア876
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
りんごが10個届くから箱を用意してね。
りんごが何個かわからないけど届くから箱を用意してね。
の違いみたいな?
何個かわからないけど、多くて100個だよ、とかいうのもありますが。
この場合、100個用意してもいいけど、実際1個しか届かなかったら99個の箱が無駄になりますね。
でも部屋が広いから無駄にあっても大丈夫なのか、部屋が狭いから無駄な箱は置きたくないのか。
(箱は配列、部屋はメモリに置き換えてください)
投稿2016/07/13 03:56
総合スコア16998
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
確保しなければならない領域の大きさが、(コンパイル時ではなく)実行時に明らかになる場合、動的に確保するしかありません。
投稿2016/07/13 02:41
総合スコア16614
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/07/13 04:10