fjの時代から10年以上に渡るmalloc/free問題について語ってください(^q^)
前スレ
main以外★mallocの後にfree不要と言うバカいるの?
http://toro.2ch.net/test/read.cgi/tech/1352812333/
mallocの後にfree不要と言うバカいるの?Part2
■ このスレッドは過去ログ倉庫に格納されています
2013/01/30(水) 21:38:37.44
503デフォルトの名無しさん
2014/10/14(火) 09:58:22.05ID:9xoyfEkM exitする直前にfreeしないのは、OSのメモリ管理機能を利用してるってことなんだけど?
504デフォルトの名無しさん
2014/10/14(火) 10:05:00.55ID:FOfhE0DJ てなしたやはたてやな
505デフォルトの名無しさん
2014/10/14(火) 10:21:21.80ID:KA+Nt7Wt 長文の割にワケワカなこと書いて漫画な
506デフォルトの名無しさん
2014/10/15(水) 20:16:19.78ID:94xVsGz9 >>503
バカ発見。
バカ発見。
507デフォルトの名無しさん
2014/10/15(水) 20:25:23.13ID:hrBmyTxM 自己紹介乙
508デフォルトの名無しさん
2014/10/16(木) 04:07:06.14ID:7g6vpmsm >>502
>ですから、仮想記憶が一般的になると、多くのランタイムライブラリがメモリー管理を
>OSに任せるようになりました。
>メモリーの開放が直接OSによって処理されることで、OSは二次記憶から情報を取り出さずに
>解放するタイミングを得ます。
そんな非効率的なことをやってる環境があるの?
>ですから、仮想記憶が一般的になると、多くのランタイムライブラリがメモリー管理を
>OSに任せるようになりました。
>メモリーの開放が直接OSによって処理されることで、OSは二次記憶から情報を取り出さずに
>解放するタイミングを得ます。
そんな非効率的なことをやってる環境があるの?
509デフォルトの名無しさん
2014/10/16(木) 06:57:35.08ID:KoQGXxiO VCのmallocはHeapAllocに丸投げする場合があるようだが、一般的かっていうと…
510デフォルトの名無しさん
2014/10/17(金) 09:39:29.66ID:O3Ha9Xaq 何を非効率と言いたいか知らないが、アプリがfreeしまくればメモリアクセスは当然発生する。
サクッと終了しちゃえば、OSはそのアプリに割り当ててたページをそのまま割り当て解除して
回収するだけ。
この効率の差を理解できないか、OSというものを理解してない発言でしかないわけだがwwwww
サクッと終了しちゃえば、OSはそのアプリに割り当ててたページをそのまま割り当て解除して
回収するだけ。
この効率の差を理解できないか、OSというものを理解してない発言でしかないわけだがwwwww
511デフォルトの名無しさん
2014/10/17(金) 16:14:49.18ID:v27NSYq1512デフォルトの名無しさん
2014/10/17(金) 16:21:12.12ID:qPP0na7I アプリ終了以外では
ある程度の大きさ以外は、freeしても割り当て解除はされませんよ
だから、ヘタすると、メモリ分断が怒って....
ある程度の大きさ以外は、freeしても割り当て解除はされませんよ
だから、ヘタすると、メモリ分断が怒って....
513デフォルトの名無しさん
2014/10/17(金) 17:45:37.94ID:O3Ha9Xaq >>511 メモリを大量に確保するアプリならどれにでもあてはまる、
ということすら理解できないのかw
ということすら理解できないのかw
514デフォルトの名無しさん
2014/10/17(金) 18:16:31.32ID:P1joaUul515デフォルトの名無しさん
2014/10/17(金) 18:16:40.65ID:xzFrNjz5 >>510
>>502の言うようにOSにメモリ確保を丸投げしてる場合、APIによってはOSも参照カウントの操作・確認も行うかもしれんぞ?
(例えば、WinのCreateFileMappingで確保したページファイル領域は生きたハンドル(を持つプロセス)があれば残る)
解放をOSに任せることで確実に軽減できるのは、アプリ側が解放すべきハンドルやポインタを走査するコストだけ。
その他のコストは実装依存でどのくらい軽減できるかが異なる。
…けど、これが問題になるケースも実装もそう多くないだろうからなぁ…
>>513
メモリ管理情報の操作に時間がかかってるんだから、小さい領域を山のように確保してるアプリじゃないか?
ポインタの走査にも時間がかかりやすい構造(馬鹿正直なリンクリストなど)だとよりコストが増える。
>>502の言うようにOSにメモリ確保を丸投げしてる場合、APIによってはOSも参照カウントの操作・確認も行うかもしれんぞ?
(例えば、WinのCreateFileMappingで確保したページファイル領域は生きたハンドル(を持つプロセス)があれば残る)
解放をOSに任せることで確実に軽減できるのは、アプリ側が解放すべきハンドルやポインタを走査するコストだけ。
その他のコストは実装依存でどのくらい軽減できるかが異なる。
…けど、これが問題になるケースも実装もそう多くないだろうからなぁ…
>>513
メモリ管理情報の操作に時間がかかってるんだから、小さい領域を山のように確保してるアプリじゃないか?
ポインタの走査にも時間がかかりやすい構造(馬鹿正直なリンクリストなど)だとよりコストが増える。
516デフォルトの名無しさん
2014/10/17(金) 19:39:54.06ID:lxCKNdJC HeapAllocはプロセス内で確保したメモリを小分けして管理してるだけで、
それをOSの機能の一部みたいに扱うのはなんかモニョるな。
それをOSの機能の一部みたいに扱うのはなんかモニョるな。
517デフォルトの名無しさん
2014/10/17(金) 20:22:20.74ID:OUYn97Bj >>511
お前がひねり出したうんこプログラム全部
お前がひねり出したうんこプログラム全部
518デフォルトの名無しさん
2014/10/17(金) 21:53:10.77ID:xzFrNjz5 >>516
言いたいことは分かるがWin32APIって案外そういうの多いからなぁ…
user32とかkernel32にも標準CライブラリみたいなAPI(sprintfモドキも居るしw)が結構一杯ある。
MulDivやCopyMemoryみたいなのも居るし、CopyRectに至ってはただの32バイトコピー。
HeapAlloc程度でモニョってたらこいつらはモニョるなんてレベルじゃすまんぞw
MulDiv(32ビット値3つから中間値64ビットの掛け算と割り算)が何故カーネル扱いなのかと。
言いたいことは分かるがWin32APIって案外そういうの多いからなぁ…
user32とかkernel32にも標準CライブラリみたいなAPI(sprintfモドキも居るしw)が結構一杯ある。
MulDivやCopyMemoryみたいなのも居るし、CopyRectに至ってはただの32バイトコピー。
HeapAlloc程度でモニョってたらこいつらはモニョるなんてレベルじゃすまんぞw
MulDiv(32ビット値3つから中間値64ビットの掛け算と割り算)が何故カーネル扱いなのかと。
519デフォルトの名無しさん
2014/10/18(土) 01:39:31.35ID:/oNwCDSd >>510
つスレッドタイトル
つスレッドタイトル
520デフォルトの名無しさん
2014/10/18(土) 13:08:53.33ID:36yYJ0yX521デフォルトの名無しさん
2014/10/18(土) 13:50:57.61ID:/oNwCDSd >>520
そうもいかない、そんな結論では C++ がいまだに営々と複雑化にこだわっている立つ瀬がない‥
そうもいかない、そんな結論では C++ がいまだに営々と複雑化にこだわっている立つ瀬がない‥
522デフォルトの名無しさん
2014/10/18(土) 16:59:54.98ID:36yYJ0yX メモリは動的に確保するくせに開放は静的にOSに任せたい
だったら、必要になるであろうメモリも配列で静的に確保しとけばいいんじゃね?
とか思うんだが…
でこういうこと言うと荒れるから、結論は
freeしたい人はして、したくない人はしない
で終了でいいんじゃね?っていう
だったら、必要になるであろうメモリも配列で静的に確保しとけばいいんじゃね?
とか思うんだが…
でこういうこと言うと荒れるから、結論は
freeしたい人はして、したくない人はしない
で終了でいいんじゃね?っていう
523デフォルトの名無しさん
2014/10/18(土) 17:06:19.18ID:/oNwCDSd >>522
それは古来lispでもよくみられたプール式、cons セルという定サイズ領域を多量に使う用途で採用されているのをみたことがある
それは古来lispでもよくみられたプール式、cons セルという定サイズ領域を多量に使う用途で採用されているのをみたことがある
524デフォルトの名無しさん
2014/10/19(日) 18:09:53.15ID:9/KRJRbT 解放しないプロセスってデバッガで実行すると終了時に大量のleak検出を吐き出したりしないのか?
525デフォルトの名無しさん
2014/10/20(月) 02:00:02.18ID:jjiQL4kf 吐いたとしても意図的に吐かせてるつもりだろうから問題ないんだろ
526デフォルトの名無しさん
2014/10/20(月) 12:45:42.29ID:4QGk34Ml たぶんメモリリークしてもプロセス終了時に
全部解放されるんだから大丈夫だと思ってるんじゃない?
全部解放されるんだから大丈夫だと思ってるんじゃない?
527デフォルトの名無しさん
2014/10/20(月) 12:49:49.79ID:6/LNQkyp リソースリークとメモリリークの区別もできないとかが典型例だな
528デフォルトの名無しさん
2014/10/20(月) 19:41:25.28ID:WDflShpF リークと解放の区別が付かないバカは死ねば良いと思う。
529デフォルトの名無しさん
2014/10/20(月) 19:48:59.73ID:+DF5oC/s メモリリーク検出ツールでリークと解放の
区別がつかなくなるから解放しとけって話でしょw
区別がつかなくなるから解放しとけって話でしょw
530デフォルトの名無しさん
2014/10/20(月) 23:06:26.87ID:exxFMbgq プログラム中で確保したメモリの各々がfreeする必要あるかないか、間違えずに
判断できる達人ならリークチェッカ使う必要ないな。
判断できる達人ならリークチェッカ使う必要ないな。
531デフォルトの名無しさん
2014/10/21(火) 12:31:58.89ID:LAOYaiit532デフォルトの名無しさん
2014/10/21(火) 12:58:58.48ID:cxE2fch2 要約?
533デフォルトの名無しさん
2014/10/21(火) 13:01:27.03ID:FB8PDZ29 普通にできないといけないことではないかと
534デフォルトの名無しさん
2014/10/21(火) 13:25:02.74ID:LAOYaiit リークチェッカなんて必要ない。
作った奴は馬鹿だ。
ミスをしなければいいだけの話。
作った奴は馬鹿だ。
ミスをしなければいいだけの話。
535デフォルトの名無しさん
2014/10/21(火) 13:49:27.95ID:FB8PDZ29 ミスしてもいいのでは、修正できれば
いきなり完成品?作れる人いるのけ
いきなり完成品?作れる人いるのけ
536デフォルトの名無しさん
2014/10/21(火) 17:55:34.62ID:RumsGmel デバッグモードでコンパイルしたときだけ解放したら
良いだけじゃん馬鹿すぎ
良いだけじゃん馬鹿すぎ
537デフォルトの名無しさん
2014/10/21(火) 18:51:18.50ID:LAOYaiit >>535
その修正をサポートするルールがリークチェッカでしょ?
で、free不要なんていって、free書いてないから
たくさん出るエラーの中から本当にリークしているものを
探して出すというマヌケな作業を行うwww
結論出たじゃん? freeは必要。
その修正をサポートするルールがリークチェッカでしょ?
で、free不要なんていって、free書いてないから
たくさん出るエラーの中から本当にリークしているものを
探して出すというマヌケな作業を行うwww
結論出たじゃん? freeは必要。
538デフォルトの名無しさん
2014/10/21(火) 19:58:14.89ID:FB8PDZ29 便利な道具がある。
とかいうとわからないでも出来ると勘違い...
とかいうとわからないでも出来ると勘違い...
539デフォルトの名無しさん
2014/10/21(火) 20:16:00.88ID:7WAeJlTS なんでfree関数というものがあるのかを考えればわかるよな
もう終わりだろ…
もう終わりだろ…
540デフォルトの名無しさん
2014/10/21(火) 21:03:35.69ID:c8NUu7RB541デフォルトの名無しさん
2014/10/21(火) 21:34:25.75ID:FB8PDZ29 リークチェッカのエラーをなくすことが答えだと思ってる人もいますね
微妙な...
微妙な...
542デフォルトの名無しさん
2014/10/21(火) 22:04:40.05ID:RG7X7O+y リークチェッカーでリークを葬ったら、おもむろに選別していけば言いだけの話
というか、リソースリークの方が深刻でちょっと困っている
というか、リソースリークの方が深刻でちょっと困っている
543デフォルトの名無しさん
2014/10/22(水) 21:25:19.20ID:9Jwqj8Ni おもむろに選別する効果・・・0.001秒速くなる。
デメリット、選別作業に数時間。
ドラブルあって、戻すのに数時間
デメリット、選別作業に数時間。
ドラブルあって、戻すのに数時間
544デフォルトの名無しさん
2014/10/23(木) 01:07:59.70ID:lumgeE3v >>542
リソースの確保・開放処理をリークチェッカと同じ仕組でラップしよう。
リソースの確保・開放処理をリークチェッカと同じ仕組でラップしよう。
545デフォルトの名無しさん
2014/10/23(木) 08:36:30.18ID:CIjfK2M+ >>544
api の数だけラップを用意するのもなんだかね‥
api の数だけラップを用意するのもなんだかね‥
546デフォルトの名無しさん
2014/12/03(水) 21:28:00.02ID:j0dAKNGZ C++だと、動的確保って
int *a = new int;
/*
aを使った処理
*/
delete a;
みたく書くと思うけど、deleteしないとアプリケーションを終了させても
確保されっぱなしだよね?
free()不要とか言ってるやつは、上記でいうdelete不要って言ってるのと
同じだよね?
int *a = new int;
/*
aを使った処理
*/
delete a;
みたく書くと思うけど、deleteしないとアプリケーションを終了させても
確保されっぱなしだよね?
free()不要とか言ってるやつは、上記でいうdelete不要って言ってるのと
同じだよね?
547デフォルトの名無しさん
2014/12/03(水) 21:41:48.53ID:JFY2u8h+ newは互換性のためにmallocで実装されてると聞いたことがある。ほんとか知らんけど。
548デフォルトの名無しさん
2014/12/03(水) 22:01:51.69ID:U2a4HdIu >>546
>deleteしないとアプリケーションを終了させても確保されっぱなしだよね?
いや、それはない。アプリ終了時にアプリの使用していたメモリは OS が解放する。これは基本的な共通認識。
それをみこして free()/delete を@まったくしないでもいい、A選別して使用しないのもありだ、B信者ならどんな new/malloc() も必ず delete/free() すべきだ、真っ向に対立している。
>deleteしないとアプリケーションを終了させても確保されっぱなしだよね?
いや、それはない。アプリ終了時にアプリの使用していたメモリは OS が解放する。これは基本的な共通認識。
それをみこして free()/delete を@まったくしないでもいい、A選別して使用しないのもありだ、B信者ならどんな new/malloc() も必ず delete/free() すべきだ、真っ向に対立している。
549デフォルトの名無しさん
2014/12/03(水) 22:25:43.16ID:JF624AUp B選別するほうが面倒くさいだろう
550デフォルトの名無しさん
2014/12/04(木) 02:18:35.19ID:wOy+480c C++なら、メモリマネージメントクラス書くでしょ。その前にstd::vectorあるけど。
551デフォルトの名無しさん
2014/12/04(木) 04:20:29.25ID:ViSTblTx Jane使ってる人は分かると思うけど、一度に多量の画像を保存する機会が多いと思う
そしてJaneは一度立ち上げたらOS再起動するまで大抵立ち上げっぱなし
そんな状態で画像の展開領域のためにmalloc()もしくはnewしたメモリをfree()やdelete
しなかったらどうなる?これ32bitアプリでしょ?120〜150枚ほど画像を開くと、例えば俺の
環境の場合Windows8.1だからJaneには2GB割り当あられるけど、free()しないとすぐに
メモリがなくなっちゃうね
そしてJaneは一度立ち上げたらOS再起動するまで大抵立ち上げっぱなし
そんな状態で画像の展開領域のためにmalloc()もしくはnewしたメモリをfree()やdelete
しなかったらどうなる?これ32bitアプリでしょ?120〜150枚ほど画像を開くと、例えば俺の
環境の場合Windows8.1だからJaneには2GB割り当あられるけど、free()しないとすぐに
メモリがなくなっちゃうね
552デフォルトの名無しさん
2014/12/04(木) 07:46:58.88ID:44/e6+B9 delete/free()不要って言ってる人って、もはやなぜメモリを動的に確保するのか?
の意味を見失ってる人ですよね?
可哀想です
の意味を見失ってる人ですよね?
可哀想です
553デフォルトの名無しさん
2014/12/04(木) 08:53:33.85ID:i8WWsgkD554デフォルトの名無しさん
2014/12/04(木) 09:15:31.23ID:otxDKoZc ガベージコレクションはいらない、と必死でやせ我慢してC++を使う俺カッコイイ、というわけですねわかります
本来はこの一言で終わる話なのに、可哀想です
本来はこの一言で終わる話なのに、可哀想です
555デフォルトの名無しさん
2014/12/04(木) 12:56:10.33ID:hhBXBLyI556デフォルトの名無しさん
2014/12/04(木) 18:22:41.52ID:jHjIGczB なまぽおいしいです
557デフォルトの名無しさん
2014/12/04(木) 20:36:19.32ID:e632zg1P >>554
GC はまだ「完成された」というほどの領域に至っていない、Mark&Sweep とか CopyGC, 世代別GC、incrementalGCなど、いろんな手法を駆使してだましだまし実装しているレベル
うそだと思うのなら、スマフォアプリを見ればよい、スマフォは定期的に再起動しないといけないレベル、iphone は定期的にiOSアップデートの方が先にやってくるようだが
GC はまだ「完成された」というほどの領域に至っていない、Mark&Sweep とか CopyGC, 世代別GC、incrementalGCなど、いろんな手法を駆使してだましだまし実装しているレベル
うそだと思うのなら、スマフォアプリを見ればよい、スマフォは定期的に再起動しないといけないレベル、iphone は定期的にiOSアップデートの方が先にやってくるようだが
558デフォルトの名無しさん
2014/12/04(木) 20:49:21.59ID:otxDKoZc malloc/freeを確実に行う方法は完成している、とでも言うのかwwwwwwwwwww
559デフォルトの名無しさん
2014/12/04(木) 20:50:13.03ID:otxDKoZc 研究が盛んなあらゆる分野に「まだ「完成された」というほどの領域に至っていない」って
喧嘩売ってみろよw
喧嘩売ってみろよw
560デフォルトの名無しさん
2014/12/04(木) 21:03:43.58ID:e632zg1P >>558
簡単なラッパをかませばいいだけの話、それすらもできないの?
簡単なラッパをかませばいいだけの話、それすらもできないの?
561デフォルトの名無しさん
2014/12/04(木) 21:25:34.66ID:otxDKoZc いろんな手法を駆使してだましだまし漏れがないようにしているレベル、って言うんじゃないのか、それw
562デフォルトの名無しさん
2014/12/04(木) 22:34:16.24ID:wOy+480c それって言語レベルで完全なGC無いと満足できませんっていってないか?
563デフォルトの名無しさん
2014/12/04(木) 23:15:24.98ID:Q4EOsLJ8 malloc/freeでバグばっかり出してる奴が「freeしない」という解決策を正当化しようとしているだけの話。
564デフォルトの名無しさん
2014/12/05(金) 00:48:52.11ID:3wjXi0Au この感じだとバグ出す以前の問題で、deleteの使い方知らずに恥かいたJava厨なんじゃね?
565デフォルトの名無しさん
2014/12/05(金) 01:39:25.94ID:eQEw8fvn なぜメモリを動的に確保する必要があるのか?という基本に立ち返って考えれば
不要論は論外であることに気づくだろう
注:このスレタイからわかるように近年のGCは範疇に入っていない
不要論は論外であることに気づくだろう
注:このスレタイからわかるように近年のGCは範疇に入っていない
566デフォルトの名無しさん
2014/12/05(金) 08:03:02.81ID:F2ZjRsjm もともと GC の話じゃないし
567デフォルトの名無しさん
2014/12/05(金) 08:19:12.35ID:2qqkLjHh >>561
ラッパ一つを「いろんな」「駆使して」とかいうお子様レベルなの?
あと GC はまだまだだよ、Java の業務アプリを60日間起動しているとメモリ占有量が増えてきてきびきび動かなくなるとか勘弁してほしい、スマフォもイマイチだなあ
ラッパ一つを「いろんな」「駆使して」とかいうお子様レベルなの?
あと GC はまだまだだよ、Java の業務アプリを60日間起動しているとメモリ占有量が増えてきてきびきび動かなくなるとか勘弁してほしい、スマフォもイマイチだなあ
568デフォルトの名無しさん
2014/12/05(金) 11:53:33.63ID:IjAdRY0C ほら出た、「俺様のやってる業務には」というすごく狭い世界が、世界の全てだ、みたいな人w
569デフォルトの名無しさん
2014/12/05(金) 20:02:26.00ID:2qqkLjHh >>559
確かにFORTRAN, COBOL と並ぶ由緒正しき Lisp 様由来の GC に喧嘩を売るのはちょっと怖いが、実はすでに試みてみた‥
http://peace.2ch.net/test/read.cgi/tech/1408017352/201
確かにFORTRAN, COBOL と並ぶ由緒正しき Lisp 様由来の GC に喧嘩を売るのはちょっと怖いが、実はすでに試みてみた‥
http://peace.2ch.net/test/read.cgi/tech/1408017352/201
570デフォルトの名無しさん
2014/12/06(土) 00:13:17.80ID:tAcOC+EO Qzって、Lisp Schemeでケンカ吹っかけてガン無視されてるよな。
571デフォルトの名無しさん
2014/12/06(土) 00:28:28.87ID:uyZCaoW8 「胸を借りるつもりで」
572デフォルトの名無しさん
2014/12/06(土) 01:08:13.40ID:uyZCaoW8 >>547
演算子 new をオーバーロードするとき、中身は malloc() で書かざるを得ない気がする‥
演算子 new をオーバーロードするとき、中身は malloc() で書かざるを得ない気がする‥
573デフォルトの名無しさん
2014/12/06(土) 03:30:36.01ID:Iv1q4dyj >>572
VirtualAllocとかOS依存のメソッド使ったり、グローバルな配列を細切れに使ったりも出来るんじゃない?
標準のAPIで書くならmallocしかないけど…
コンパイラ環境側が提供するnewを標準Cの範囲のみで書かなきゃダメな規則とか有るんだろうか?
だけどstd::threadとか標準Cにはどうやっても落とし込めないよなぁ…
VirtualAllocとかOS依存のメソッド使ったり、グローバルな配列を細切れに使ったりも出来るんじゃない?
標準のAPIで書くならmallocしかないけど…
コンパイラ環境側が提供するnewを標準Cの範囲のみで書かなきゃダメな規則とか有るんだろうか?
だけどstd::threadとか標準Cにはどうやっても落とし込めないよなぁ…
574デフォルトの名無しさん
2014/12/06(土) 09:58:48.26ID:Khx/zTiJ いやいや、freeが邪魔になるのは数少ない例外って
世界でものすごく広く使われているプログラムcpがfreeが邪魔だから
最後のfreeしなくなったでしょ
Google word2vecだって最後のfreeは省略している。
上で書いてあるJaneの例はfreeすべき例、
オブジェクトの寿命が終わったのだから。
free絶対主義者の考え方の何が、気に食わないかって
オブジェクトの寿命を意識してプログラムを組んでいないんじゃ
ないかってこと。
リークチェッカに引っかからなければプログラムの実行中
不必要なオブジェクトの領域が確保されていても気にしなさそう。
世界でものすごく広く使われているプログラムcpがfreeが邪魔だから
最後のfreeしなくなったでしょ
Google word2vecだって最後のfreeは省略している。
上で書いてあるJaneの例はfreeすべき例、
オブジェクトの寿命が終わったのだから。
free絶対主義者の考え方の何が、気に食わないかって
オブジェクトの寿命を意識してプログラムを組んでいないんじゃ
ないかってこと。
リークチェッカに引っかからなければプログラムの実行中
不必要なオブジェクトの領域が確保されていても気にしなさそう。
575デフォルトの名無しさん
2014/12/06(土) 11:47:15.03ID:dmb0kXdE なぜメモリを静的にではなく動的に確保するのか?の本来の目的を考えれば
自ずと答えは出る
自ずと答えは出る
576デフォルトの名無しさん
2014/12/06(土) 12:31:58.16ID:ui+tbMEF オブジェクトの寿命を意識するってのは、プログラム開始してから終了するまでの
どの期間存在するかを常に意識しろということなのかね。
プログラムの構造化によって生存区間を限定し、不要になった時点で破棄することで
大域的な知識によらずに安全に使用リソースの最小化を図るという考え方が理解できない
原始時代の人なんだろうか。
そういう人は少なくとも関数内でmalloc/freeを使うべきじゃないな。
どの期間存在するかを常に意識しろということなのかね。
プログラムの構造化によって生存区間を限定し、不要になった時点で破棄することで
大域的な知識によらずに安全に使用リソースの最小化を図るという考え方が理解できない
原始時代の人なんだろうか。
そういう人は少なくとも関数内でmalloc/freeを使うべきじゃないな。
577デフォルトの名無しさん
2014/12/06(土) 12:50:41.02ID:JydoFUaV 大域的な知識を基に最適化するのはむしろ今のトレンドだけど
オブジェクトの生存期間を意識し、場合によってはfreeしないことで
プログラムの性能を向上させる話でしょ?
cpやword2vecの例は
オブジェクトの生存期間を意識し、場合によってはfreeしないことで
プログラムの性能を向上させる話でしょ?
cpやword2vecの例は
578デフォルトの名無しさん
2014/12/06(土) 14:49:24.53ID:ui+tbMEF 自動化ないしは意識せずにできるようにするのはな。
プログラマ自身がしこしこやるのがいったいどこのトレンドだよw
プログラマ自身がしこしこやるのがいったいどこのトレンドだよw
579デフォルトの名無しさん
2014/12/06(土) 15:42:19.80ID:dmb0kXdE そういうやつは、スレチだがgcつかっとけよもう
580デフォルトの名無しさん
2014/12/06(土) 18:25:26.31ID:dOSwxHPK cpやword2vecを書くようなプログラマと
その辺で業務システム書いてるドカタを
同じ土俵で論じるのが間違い
その辺で業務システム書いてるドカタを
同じ土俵で論じるのが間違い
581574
2014/12/06(土) 19:13:16.22ID:Khx/zTiJ >>576
>> 不要になった時点で破棄
まさしくそれ、
不要になったと判明した時点で速やかに破棄というのが大前提。
free絶対派はその意識が乏しいんじゃないかと。
なんとなくmallocとfreeは対でなければいけないから漫然と
freeしているだけなんじゃないかと。
上記のJaneの例なら
画像を破棄したらその画像で使用した領域はその時点でfree
スレッドを破棄したら、それに使った領域はその時点でfree
word2vecは入力した文書の統計情報は最後まで利用する
--> 破棄されることがないので、freeする必要がない
>> 不要になった時点で破棄
まさしくそれ、
不要になったと判明した時点で速やかに破棄というのが大前提。
free絶対派はその意識が乏しいんじゃないかと。
なんとなくmallocとfreeは対でなければいけないから漫然と
freeしているだけなんじゃないかと。
上記のJaneの例なら
画像を破棄したらその画像で使用した領域はその時点でfree
スレッドを破棄したら、それに使った領域はその時点でfree
word2vecは入力した文書の統計情報は最後まで利用する
--> 破棄されることがないので、freeする必要がない
582デフォルトの名無しさん
2014/12/06(土) 19:41:46.07ID:ui+tbMEF それ「最後まで利用」じゃなくて、利用終了時点の判断をネグってるだけ。
583デフォルトの名無しさん
2014/12/06(土) 19:46:54.04ID:ADt2fRJM プロセスが確保したメモリは、プロセスを終了させても解放されず、
解放するにはコンピュータの再起動が必要となるOSが昔あったなあ。
バグではなく、OSの正規の仕様として。OSの名前忘れたけど。
そんな仕様じゃメモリをいくら積んでも足りないし、連続稼動できないじゃん!
・・・という各方面からの否定的な評価に対し、そのOSの設計者は
「メモリを十分に積まないのが問題」「定期的にリブートすればいいこと」
「メモリ資源の再利用をOSに任せようとするアプリケーション開発者の手抜き」
のようにOS側の問題ではないと一蹴してて、その主張に一理あるということで、
当時はちょっと衝撃を受けたわ。
malloc したものを free することには合理性があるけど。
その価値観に対抗するようなOS設計哲学も存在するということで。
何が正しいのか、唯一の結論を出すのは、なかなか難しいかもねえ(^o^)ノ
解放するにはコンピュータの再起動が必要となるOSが昔あったなあ。
バグではなく、OSの正規の仕様として。OSの名前忘れたけど。
そんな仕様じゃメモリをいくら積んでも足りないし、連続稼動できないじゃん!
・・・という各方面からの否定的な評価に対し、そのOSの設計者は
「メモリを十分に積まないのが問題」「定期的にリブートすればいいこと」
「メモリ資源の再利用をOSに任せようとするアプリケーション開発者の手抜き」
のようにOS側の問題ではないと一蹴してて、その主張に一理あるということで、
当時はちょっと衝撃を受けたわ。
malloc したものを free することには合理性があるけど。
その価値観に対抗するようなOS設計哲学も存在するということで。
何が正しいのか、唯一の結論を出すのは、なかなか難しいかもねえ(^o^)ノ
584デフォルトの名無しさん
2014/12/06(土) 20:01:10.98ID:5oGFUyw+ UnixのSIGKILLみたいに問答無用でプロセスが殺されたりせずに、後始末の作業が
できることがシステム全体として保証されてるなら通る理屈だけど、どうせそのような
仕掛けがあるわけじゃないだろうなw
できることがシステム全体として保証されてるなら通る理屈だけど、どうせそのような
仕掛けがあるわけじゃないだろうなw
585デフォルトの名無しさん
2014/12/06(土) 22:06:14.90ID:Iv1q4dyj586デフォルトの名無しさん
2014/12/06(土) 22:10:57.01ID:jRYa77lH プログラムの最初から最後まで領域を優先するようなメモリはStatic使うべし。
MallocはFreeされるべき。
MallocはFreeされるべき。
587デフォルトの名無しさん
2014/12/06(土) 22:51:56.38ID:dmb0kXdE 途中でfreeしてメモリを効率よく使えるようmallocするんじゃないんかと…
588デフォルトの名無しさん
2014/12/06(土) 23:09:29.33ID:jRYa77lH Malloc自体は遅いんだよ。
Freeしなかったら蓄積してって確保できなくなるぞ。
まぁ、最近のコンピュータで困るかはわからん。
Freeしなかったら蓄積してって確保できなくなるぞ。
まぁ、最近のコンピュータで困るかはわからん。
589デフォルトの名無しさん
2014/12/06(土) 23:29:03.74ID:5oGFUyw+ GCを前提としたmallocだと、極端な奴ではポインタずらして管理情報をちょこっと書くだけ、
って場合もあるけどなw
って場合もあるけどなw
590デフォルトの名無しさん
2014/12/06(土) 23:32:11.16ID:jRYa77lH なにそのオレオレライブラリ。
591デフォルトの名無しさん
2014/12/07(日) 00:10:44.64ID:T0oVgQBw mallocしたメモリをGCしてくれるわけねーだろw
そういうやつはC++ならせめてgcnewくらい使え
そういうやつはC++ならせめてgcnewくらい使え
592デフォルトの名無しさん
2014/12/07(日) 05:38:55.41ID:LVeISVsO これが fopen() / fclose()、低水準なら open()/close() の話だったりすると、
プロセス終了時にオープンされているものは OS がクローズしてくれるものにもかかわらず、
「プログラム終了時の fclose() を省略しないやつは糞」というのはあまりきかないね…
ま 10万20万と fopen() するわけではないからね…
プロセス終了時にオープンされているものは OS がクローズしてくれるものにもかかわらず、
「プログラム終了時の fclose() を省略しないやつは糞」というのはあまりきかないね…
ま 10万20万と fopen() するわけではないからね…
593デフォルトの名無しさん
2014/12/07(日) 09:22:07.16ID:T0oVgQBw つーか、終了時のメモリ開放処理程度をめんどくさいとか言うやつは
もうプログラマなんか向いてねーからやめちまえよ
もうプログラマなんか向いてねーからやめちまえよ
594デフォルトの名無しさん
2014/12/07(日) 09:40:05.22ID:r6DD4JyZ595デフォルトの名無しさん
2014/12/07(日) 09:50:23.92ID:SIYxuRDn596デフォルトの名無しさん
2014/12/07(日) 10:04:52.37ID:ekuZw6uY 最近のシステムではないと思うけど、ファイルの場合は排他ロックしたらシェルから見てデッドロックしたりするので解放しないという選択肢はないはず。
597デフォルトの名無しさん
2014/12/07(日) 10:13:48.44ID:RIZYWRwW 昔はOSの設計上、同時に開けるファイルハンドル数に厳しい制限があった
今はほぼ制限なしに等しくプロセス外にまで支障をきたすほどたくさんファイルを開くシステムも稀
プロセス間で同じファイルを扱うケースも実際には少ない
今はほぼ制限なしに等しくプロセス外にまで支障をきたすほどたくさんファイルを開くシステムも稀
プロセス間で同じファイルを扱うケースも実際には少ない
598デフォルトの名無しさん
2014/12/07(日) 10:45:17.82ID:mrRmmrII たしかに MS-DOS でも1プロセス20までだったか、プロセスメモリマップにもそういうテーブルがあったね
599デフォルトの名無しさん
2014/12/07(日) 10:52:54.31ID:mrRmmrII600デフォルトの名無しさん
2014/12/07(日) 11:05:32.98ID:SIYxuRDn ファイルロックの方法によるのにあっさり決めつけてしまってるあたりが、
全くわかってないことを露呈していて趣き深い。
全くわかってないことを露呈していて趣き深い。
601デフォルトの名無しさん
2014/12/07(日) 13:04:46.31ID:UwBbHZ64 ちょっとしたgcぐらい、自分で作れよ
gcnew?知るかそんなの
gcnew?知るかそんなの
602デフォルトの名無しさん
2014/12/08(月) 10:37:40.97ID:SJ/ip5mJ 日本主記憶解放戦線。
603デフォルトの名無しさん
2014/12/08(月) 17:49:26.49ID:3czqE9B9 >>602
こまめにmallocしまくって自滅フラグw
こまめにmallocしまくって自滅フラグw
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 「おこめ券は米以外の食品も買える。効果的な活用を」 地元で農水相 [山形県] [少考さん★]
- 高市首相の答弁書に「台湾有事答えない」と明記 存立危機発言当時 ★11 [蚤の市★]
- 【速報】「女芸人No.1決定戦 THE W」9代目女王にニッチェ! 7年ぶり3度目で悲願の優勝 [牛丼★]
- 【芸能】『女芸人No.1決定戦THE W』 粗品が最後にバッサリ「優勝賞金1000万円にしてはレベル低い大会」 [冬月記者★]
- 【沖縄】開業4ヵ月でこれは…“国民の税金”投入の『ジャングリア沖縄』で見た衝撃的な光景と、モチベーションが低い一部スタッフの現状 [ぐれ★]
- 今年の流行語大賞 『働いて働いて働いてまいります』が受賞で不快感… 過労自殺の遺族らが会見「家族にむち打つような行為だ」 [冬月記者★]
- __ブルガリア、Z世代の抗議が増税予算と汚職政治への怒りへ、政権が崩壊、若者を無視する政治への警告 [827565401]
- クズ「勉強頑張らなかった奴は一生DQNと一緒に肉体労働しろ」☚勉強頑張れるのも環境と巡り合わせなんだが? [783475554]
- スピッツの4番目の曲、決まらない
- 【時事】立憲民主党、30代の支持率が「ゼロ」😨 [369521721]
- 俺の口癖が「へー」「そう」「どうも」なんだが
- キャッシュレスに対応してない店、手数料が問題ならその分値上げすればいいじゃない、現金の管理や手数料、両替もただじゃない [943688309]
