いきなりタイトルに矛盾しますが。別に動的確保を毛嫌いしてるわけじゃないです。
ただ、失敗する可能性がある処理を番度書くのは厄いなぁ・・・と思っているわけです。
そこで、処理が面倒にはなりますが、大体の場合
(1)最初に割と大きめに確保
(2)足りなくなったらやっぱり少し多めに再確保
とかやっています。
なんだか酷い被害妄想の様な気もしますが、どうにも心配なんですよね。
メモリ動的確保毛嫌い症候群
Re: メモリ動的確保毛嫌い症候群
言語がわからないけど、CかC++だろうか。
「失敗する可能性がある」というのはどういうのを指すのだろう?
メモリ確保に失敗するなんていまどきほぼありえない(ありえたらそれはプログラムが狂ってるかOSがソフトウェアを実行できる状態じゃないから気にすることじゃない)だろうし。
解放忘れを指しているのなら、C++ならスマートポインタなどRAIIでどうにでもなる話だし。
何を以って毛嫌いしている(しそうになる)のかが書かれていない。
だから何を心配してるのか全くわからないけど、だったらメモリ確保とか気にしなくていい言語を使ったらどうだろうか。
「失敗する可能性がある」というのはどういうのを指すのだろう?
メモリ確保に失敗するなんていまどきほぼありえない(ありえたらそれはプログラムが狂ってるかOSがソフトウェアを実行できる状態じゃないから気にすることじゃない)だろうし。
解放忘れを指しているのなら、C++ならスマートポインタなどRAIIでどうにでもなる話だし。
何を以って毛嫌いしている(しそうになる)のかが書かれていない。
だから何を心配してるのか全くわからないけど、だったらメモリ確保とか気にしなくていい言語を使ったらどうだろうか。
Re: メモリ動的確保毛嫌い症候群
私はC言語しか使えません(ドヤ顔)
実際、メモリの動的確保が失敗する事なんてほぼ無いのは分かっているんですが、その可能性があるだけで嫌じゃありませんか?
実際、メモリの動的確保が失敗する事なんてほぼ無いのは分かっているんですが、その可能性があるだけで嫌じゃありませんか?
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
Re: メモリ動的確保毛嫌い症候群
> 実際、メモリの動的確保が失敗する事なんてほぼ無いのは分かっているんですが、その可能性があるだけで嫌じゃありませんか?
そんなことを言ってたらCPUが宇宙放射線で誤動作した場合も考えないといけない。可能性はZEROじゃないし。
「【PC Watch】 【IRPS 2011レポート】中性子線がボードのCPUやメモリなどを誤動作させる仕組み」
http://pc.watch.impress.co.jp/docs/news ... 43999.html
たぶん、気になりだしたはず。
そんなことを言ってたらCPUが宇宙放射線で誤動作した場合も考えないといけない。可能性はZEROじゃないし。
「【PC Watch】 【IRPS 2011レポート】中性子線がボードのCPUやメモリなどを誤動作させる仕組み」
http://pc.watch.impress.co.jp/docs/news ... 43999.html
たぶん、気になりだしたはず。
Re: メモリ動的確保毛嫌い症候群
オフトピック
メモリの動的確保が失敗する可能性はほぼ無い…
某環境で大量のメモリをひたすらmallocで確保する実験をした時、
さすがに失敗するかと思ったけどスワップが全力で仕事して失敗は出さなかったのは驚いたなあ…
某環境で大量のメモリをひたすらmallocで確保する実験をした時、
さすがに失敗するかと思ったけどスワップが全力で仕事して失敗は出さなかったのは驚いたなあ…
Re: メモリ動的確保毛嫌い症候群
こういうのもあるんですね。
将来、航空機に載せるプログラムを書く機会があったら気にする事にします。
将来、航空機に載せるプログラムを書く機会があったら気にする事にします。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
Re: メモリ動的確保毛嫌い症候群
いや、地上で起こる確率もZEROじゃないです。lbfuvab さんが書きました:こういうのもあるんですね。
将来、航空機に載せるプログラムを書く機会があったら気にする事にします。
この確率が無視できるならmallocエラーも無視できると思うんですけどね。
Re: メモリ動的確保毛嫌い症候群
CFDのユーザーデファインドファンクションとかやっててちまちまと動的確保するとワークステーションでも例外吐いて落ちることはある。
自分もそれが嫌だからこの用途に限ってはごそっと最初に確保する。そこで落ちるなら何時間も待たされた挙句計算が終わってないということは避けられるし、残りのコアで他の計算回す人がいてもそのせいで落ちるということはないから。
それ以外の時は気にしたことないですね。
…しかし最近はセル数が流速とかによって自動的に最適化されて時間ごとに変化するから最初に必要なリソースを予測するのができなくってる。ごそっととったつもりが足りなかったということがあって、やっぱり1日後に落ちてたりする。
なんとかならんのか…
自分もそれが嫌だからこの用途に限ってはごそっと最初に確保する。そこで落ちるなら何時間も待たされた挙句計算が終わってないということは避けられるし、残りのコアで他の計算回す人がいてもそのせいで落ちるということはないから。
それ以外の時は気にしたことないですね。
…しかし最近はセル数が流速とかによって自動的に最適化されて時間ごとに変化するから最初に必要なリソースを予測するのができなくってる。ごそっととったつもりが足りなかったということがあって、やっぱり1日後に落ちてたりする。
なんとかならんのか…
最後に編集したユーザー GRAM on 2015年4月14日(火) 01:45 [ 編集 1 回目 ]
Re: メモリ動的確保毛嫌い症候群
>ぐらみー
メモリ倍プッシュだ…!(RAM 4TByte)
メモリ倍プッシュだ…!(RAM 4TByte)
最後に編集したユーザー nullptr on 2015年4月14日(火) 03:15 [ 編集 1 回目 ]
Re: メモリ動的確保毛嫌い症候群
最近の環境だと,メモリ確保に問題が起きる可能性は概して低いですね。
仮想記憶の仕組みもありますし。
ネットワークとかファイルとか,エラーを前提として組まないといけないものが現在はたっぷりありますから,そちらの方を気にすることが多いです。
メモリ確保失敗はほぼ回復不可能なエラーなので,どうしようもない,ということもありますが……。
# 現状を保存しようにも,その保存にかかるメモりを確保出来るのか,という問題が発生する
仮想記憶の仕組みもありますし。
ネットワークとかファイルとか,エラーを前提として組まないといけないものが現在はたっぷりありますから,そちらの方を気にすることが多いです。
メモリ確保失敗はほぼ回復不可能なエラーなので,どうしようもない,ということもありますが……。
# 現状を保存しようにも,その保存にかかるメモりを確保出来るのか,という問題が発生する