探検
C++相談室 part152
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2020/07/12(日) 13:42:20.13ID:TX1mpKr6530デフォルトの名無しさん
2020/09/23(水) 19:48:39.67ID:S15h3SjP 仕事で使うならBetter Cで留めるのが正しいC++の使い方。
531484
2020/09/23(水) 20:09:34.36ID:7wSVczyT >>524
確かに、数物系に「特異」な人のコメントにしては貧弱だなあと、私も思いました
たとえばガロア理論、とか、相対性理論、超弦理論、とか、を熱っぽく語って欲しいです
個人的にはエルゴート理論について薀蓄を知りたいですね
確かに、数物系に「特異」な人のコメントにしては貧弱だなあと、私も思いました
たとえばガロア理論、とか、相対性理論、超弦理論、とか、を熱っぽく語って欲しいです
個人的にはエルゴート理論について薀蓄を知りたいですね
>>527
でも iostream は失敗作という気がふつふつと…(略)
でも iostream は失敗作という気がふつふつと…(略)
534デフォルトの名無しさん
2020/09/23(水) 20:38:06.09ID:wsuhqGJa c++らしいって言っても時代によってかなり変わるし無意味な言い回しだわ。
535デフォルトの名無しさん
2020/09/23(水) 21:11:40.16ID:7wSVczyT 時代によってかなり変わるの?
C++98以降しか知らないけど
C++らしさ=テンプレート
と断言していいほどの一点張りだと思うけど(個人の感想です)
C++98以降しか知らないけど
C++らしさ=テンプレート
と断言していいほどの一点張りだと思うけど(個人の感想です)
536デフォルトの名無しさん
2020/09/23(水) 21:58:09.41ID:wsuhqGJa もうどこから突っ込んでいいかわからんくらい馬鹿
537デフォルトの名無しさん
2020/09/23(水) 23:12:26.96ID:fzdYgRfo ここまで喧喧諤諤の多くの意見が飛びかっておるが
iostream は要らん子、というのは一致しておるな
とくに operator << >> 系のやつ
iostream は要らん子、というのは一致しておるな
とくに operator << >> 系のやつ
538デフォルトの名無しさん
2020/09/23(水) 23:42:00.61ID:0XTX+Fu9 coutで出力するよりstd::stringに一旦文字列化してからprintf()で出した方が速いという時点で以下略
539はちみつ餃子 ◆8X2XSCHEME
2020/09/23(水) 23:55:04.80ID:2N0Iktsg 個人的には iostream をそこそこ好きなんだが、
今だったらこんな設計はしないだろうなというのはとてもよくわかる。
今だったらこんな設計はしないだろうなというのはとてもよくわかる。
540はちみつ餃子 ◆8X2XSCHEME
2020/09/24(木) 00:04:29.70ID:f1TxZ5Sj >>535
互換性を捨てられない以上は汚い部分も捨てられないんだよね。
だからどうやって抽象化層をかぶせるか、もっと直接に言えば
汚い部分をどう隠すかというのが C++ らしさじゃないかな。
そして型 (または型の表記) に関して汚い部分を隠す道具としては
テンプレートは特に有用なもののひとつだとは思う。
ただ、一点張りは言い過ぎで、取れる手段、手数の多さも C++ らしさだというのが私の感想。
組み合わせよう。
互換性を捨てられない以上は汚い部分も捨てられないんだよね。
だからどうやって抽象化層をかぶせるか、もっと直接に言えば
汚い部分をどう隠すかというのが C++ らしさじゃないかな。
そして型 (または型の表記) に関して汚い部分を隠す道具としては
テンプレートは特に有用なもののひとつだとは思う。
ただ、一点張りは言い過ぎで、取れる手段、手数の多さも C++ らしさだというのが私の感想。
組み合わせよう。
541デフォルトの名無しさん
2020/09/24(木) 03:03:21.13ID:yc5bnmE2 printfで%dとか%zとか指定するのめんどいやん
542デフォルトの名無しさん
2020/09/24(木) 03:09:46.41ID:sKL6gd3p printfはバッファオーバーフローの脆弱性を産みやすい
543デフォルトの名無しさん
2020/09/24(木) 03:10:26.11ID:sKL6gd3p 早いとか以前の問題
544デフォルトの名無しさん
2020/09/24(木) 05:20:27.18ID:bfjF2pM4 >>531
>意地でもテンプレートで何とかしよう
"自分でテンプレート書いて"色々どうにかしてる人が言うならまだ説得力もあるけどね
add_pointer_tとかdecayは基本的に標準ライブラリの実装(のためのメタプログラミング)の上での副産物だろ
テンプレートの文脈(=受け取った型に、場合により変換を施す必要がある)でもないとこでそんなん使って
「C++らしい」とか、だいぶ痛々しい
まぁ別に使用を禁止されてるわけでもないから使いたきゃ好きにすればいいけどね・・・
>意地でもテンプレートで何とかしよう
"自分でテンプレート書いて"色々どうにかしてる人が言うならまだ説得力もあるけどね
add_pointer_tとかdecayは基本的に標準ライブラリの実装(のためのメタプログラミング)の上での副産物だろ
テンプレートの文脈(=受け取った型に、場合により変換を施す必要がある)でもないとこでそんなん使って
「C++らしい」とか、だいぶ痛々しい
まぁ別に使用を禁止されてるわけでもないから使いたきゃ好きにすればいいけどね・・・
545デフォルトの名無しさん
2020/09/24(木) 06:18:07.32ID:sKL6gd3p >>544
同意
同意
546デフォルトの名無しさん
2020/09/24(木) 06:37:36.81ID:n05mXSO9 >>533
まあね、俺も禿1からの付き合いだけど
未だによくわからんところはある
iostreamに限ったことじゃなく古株のクラスライブラリって
だいたい今作るならこうはしないってところが何かあるね
大きな実害なければ我慢するし
困る場合はそれこそ腕が鳴るチャンス
まあね、俺も禿1からの付き合いだけど
未だによくわからんところはある
iostreamに限ったことじゃなく古株のクラスライブラリって
だいたい今作るならこうはしないってところが何かあるね
大きな実害なければ我慢するし
困る場合はそれこそ腕が鳴るチャンス
547デフォルトの名無しさん
2020/09/24(木) 06:40:25.74ID:n05mXSO9548デフォルトの名無しさん
2020/09/24(木) 06:48:44.27ID:n05mXSO9 用意されているものを使っただけだろ
意地でもとかバイアスが入るのはコンプレックスの顕れだからこそ
ギャンギャン強弁してくるわけだ
意地でもとかバイアスが入るのはコンプレックスの顕れだからこそ
ギャンギャン強弁してくるわけだ
549デフォルトの名無しさん
2020/09/24(木) 07:02:36.59ID:4EukrBNz550デフォルトの名無しさん
2020/09/24(木) 07:04:12.32ID:bfjF2pM4551デフォルトの名無しさん
2020/09/24(木) 07:09:28.96ID:n05mXSO9 返事をするのは心当たりがあるという自己申告かな?
552デフォルトの名無しさん
2020/09/24(木) 07:14:45.36ID:bfjF2pM4 なんか口調でわかるわ、いつものアホか・・・
「>」これが付いてるのは引用箇所だからな、覚えとくといいよw
「>」これが付いてるのは引用箇所だからな、覚えとくといいよw
553デフォルトの名無しさん
2020/09/24(木) 07:33:47.41ID:n05mXSO9 俺はまだ誰にとも言ってないんだがw
554デフォルトの名無しさん
2020/09/24(木) 07:40:21.81ID:bfjF2pM4 はいはいわろすわろす
555デフォルトの名無しさん
2020/09/24(木) 08:57:55.68ID:55R+R5Lh printf, scanf系はtypedef型の正体を知っておかねばならないとかクラス型を基本型と同等に扱えないとかモロモロあるのに
いつまでもマンセーしててもしゃーないで
いつまでもマンセーしててもしゃーないで
556デフォルトの名無しさん
2020/09/24(木) 09:00:20.65ID:sKL6gd3p >>549
いや普通にありえるからググってわかる程度のこと聞くなよ
いや普通にありえるからググってわかる程度のこと聞くなよ
557デフォルトの名無しさん
2020/09/24(木) 09:01:54.41ID:n05mXSO9558デフォルトの名無しさん
2020/09/24(木) 09:12:36.08ID:afeC5pu7 最終出力がわかりにくいとかロケール対応しにくいとかあるわけだけど
引数順にしか出力できない時点でprintfもロケール対応のやりにくさは変わらん
引数順にしか出力できない時点でprintfもロケール対応のやりにくさは変わらん
559デフォルトの名無しさん
2020/09/24(木) 09:31:03.57ID:+pWNIbO4 >>556
ググっても出てこないぞ
ググっても出てこないぞ
560デフォルトの名無しさん
2020/09/24(木) 09:40:43.54ID:sKL6gd3p ググりかたから教えなきゃならんの?
相手にしてられんわ
相手にしてられんわ
561デフォルトの名無しさん
2020/09/24(木) 09:44:41.22ID:n05mXSO9 >>558
そんなあなたにput_money, put_time
そんなあなたにput_money, put_time
562デフォルトの名無しさん
2020/09/24(木) 10:57:49.94ID:afeC5pu7 >>561
ロケールと書いたのが悪かったな
多言語化だな
語順を変えるとかやりにくい
Pythonのようにフォーマット文に引数の順番をかければ
言語による語順の違いもフォーマット文の差し替えだけで済む
ロケールと書いたのが悪かったな
多言語化だな
語順を変えるとかやりにくい
Pythonのようにフォーマット文に引数の順番をかければ
言語による語順の違いもフォーマット文の差し替えだけで済む
563デフォルトの名無しさん
2020/09/24(木) 11:05:22.76ID:7yQWIIk2564デフォルトの名無しさん
2020/09/24(木) 12:32:18.71ID:QU112yU2565デフォルトの名無しさん
2020/09/24(木) 12:43:09.70ID:G65zjecI >>547
boost::numeric::ublasとか使えばいい。
boost::numeric::ublasとか使えばいい。
566デフォルトの名無しさん
2020/09/24(木) 12:47:12.82ID:n05mXSO9 >>562
ああ確かに語順の変え方はprintfと変わらんな
auto time_v = time(nullptr);
cout << put_time(localtime(&time_v), "%m/%d/%y %H.%M'%S");
ああ確かに語順の変え方はprintfと変わらんな
auto time_v = time(nullptr);
cout << put_time(localtime(&time_v), "%m/%d/%y %H.%M'%S");
567デフォルトの名無しさん
2020/09/24(木) 13:45:56.89ID:sKL6gd3p >>564
お前も本当にゴミだな
wikipediaのリンク貼っといてやるよ
ほら
https://ja.wikipedia.org/wiki/%E6%9B%B8%E5%BC%8F%E6%96%87%E5%AD%97%E5%88%97%E6%94%BB%E6%92%83
お前も本当にゴミだな
wikipediaのリンク貼っといてやるよ
ほら
https://ja.wikipedia.org/wiki/%E6%9B%B8%E5%BC%8F%E6%96%87%E5%AD%97%E5%88%97%E6%94%BB%E6%92%83
568デフォルトの名無しさん
2020/09/24(木) 13:47:01.22ID:sKL6gd3p まじでバカはしね
569デフォルトの名無しさん
2020/09/24(木) 14:13:22.68ID:n05mXSO9 その話のどこがバッファオーバーフローなんだ?
570デフォルトの名無しさん
2020/09/24(木) 14:23:05.33ID:sKL6gd3p >コールスタック上のリターンアドレスを書き換えて不正なコードを実行させる
571デフォルトの名無しさん
2020/09/24(木) 14:24:13.29ID:sKL6gd3p 自分の過ちを認めろと言う割に自分は謝らず図々しく更に無駄な質問を重ねるとは
572デフォルトの名無しさん
2020/09/24(木) 14:30:21.28ID:EUYXPM4X >>565
boostは標準規格外なので却下
boostは標準規格外なので却下
573デフォルトの名無しさん
2020/09/24(木) 14:38:20.48ID:n05mXSO9 >>570
バッファオーバーフローさせるだけではコールスタック上のリターンアドレスは狙えないぜ
同じ記憶域期間を持つ他のオブジェクトを破壊する可能性があるというだけだ
コールスタック上のリターンアドレスを狙うなら配列でないオブジェクトのアドレスにオフセットかけるだけでもできるしな
逆に自動変数のアドレスを確実に得る技術が必要になる
printf/scanfといえばバッファオーバーフローという固定観念に囚われているから
そういう読みになっちまうんだよ
バッファオーバーフローさせるだけではコールスタック上のリターンアドレスは狙えないぜ
同じ記憶域期間を持つ他のオブジェクトを破壊する可能性があるというだけだ
コールスタック上のリターンアドレスを狙うなら配列でないオブジェクトのアドレスにオフセットかけるだけでもできるしな
逆に自動変数のアドレスを確実に得る技術が必要になる
printf/scanfといえばバッファオーバーフローという固定観念に囚われているから
そういう読みになっちまうんだよ
574デフォルトの名無しさん
2020/09/24(木) 14:46:00.53ID:sKL6gd3p まともに日本語の文章も読めないようじゃプログラムは君には難しいよ
575デフォルトの名無しさん
2020/09/24(木) 14:49:15.10ID:sKL6gd3p メモリ位置にあるデータを確認できると書いてあることすら読めてない
576デフォルトの名無しさん
2020/09/24(木) 14:54:12.15ID:0BhvwOmc おまわりさんこのひとです
577デフォルトの名無しさん
2020/09/24(木) 14:55:32.81ID:sKL6gd3p おとなしく、日本語もググるのも難しくてひとつずつ教えてもらわなきゃできません
ごめんなさいって言ってりゃいいのにw
ごめんなさいって言ってりゃいいのにw
578デフォルトの名無しさん
2020/09/24(木) 14:59:43.90ID:n05mXSO9579デフォルトの名無しさん
2020/09/24(木) 15:11:43.38ID:sKL6gd3p Wikipediaまで引用してあげたのにまだごねるのか
本当にわがままだな
本当にわがままだな
580デフォルトの名無しさん
2020/09/24(木) 15:12:12.34ID:sKL6gd3p ばかはしね
581デフォルトの名無しさん
2020/09/24(木) 15:48:16.32ID:n05mXSO9 > printfはバッファオーバーフローの脆弱性を産みやすい
重箱の隅な記事では、最後の「やすい」という主張の裏付けにはならないってことだ
粗暴な罵倒語も裏付けになるわけがないな
重箱の隅な記事では、最後の「やすい」という主張の裏付けにはならないってことだ
粗暴な罵倒語も裏付けになるわけがないな
582デフォルトの名無しさん
2020/09/24(木) 15:53:47.24ID:sKL6gd3p そんなにprintf好きなら勝手に使えばいいんじゃない?
583デフォルトの名無しさん
2020/09/24(木) 16:06:33.08ID:0BhvwOmc おまいら printf の戻り値は毎回チェックしろよ
584デフォルトの名無しさん
2020/09/24(木) 16:26:18.33ID:VqYlbH9U printfの書式にユーザ入力を使うことなんてあるか?
SQLインジェクションとはワケが違うぞ
SQLインジェクションとはワケが違うぞ
585デフォルトの名無しさん
2020/09/24(木) 17:02:36.61ID:EUYXPM4X バッファ使ってるsprintfと
バッファ使ってないprintfの
違いもわからんのか
バッファ使ってないprintfの
違いもわからんのか
586デフォルトの名無しさん
2020/09/24(木) 17:26:51.00ID:5Fx1JvjP 確かにprintfの書式文字列に関するメモリ破壊の脆弱性が示されてるが、これを「バッファオーバーフロー」と呼ぶのは違和感があるな
587デフォルトの名無しさん
2020/09/24(木) 17:33:32.86ID:sKL6gd3p わかってないくせに危険な関数使うなよ
588デフォルトの名無しさん
2020/09/24(木) 17:34:56.21ID:sKL6gd3p パフォーマンスとか以前の問題だろうが
589デフォルトの名無しさん
2020/09/24(木) 17:36:15.17ID:sKL6gd3p >バッファ使ってるsprintfと
それ勝手に持ち出したのお前だからなw
それ勝手に持ち出したのお前だからなw
590デフォルトの名無しさん
2020/09/24(木) 18:19:48.23ID:7yQWIIk2 こっからどう乗り切る気?
591デフォルトの名無しさん
2020/09/24(木) 18:21:49.52ID:9cj79wpF 結局のところ、>>542が恥ずかしい奴だったという結論でok?
592デフォルトの名無しさん
2020/09/24(木) 18:26:33.04ID:sKL6gd3p593デフォルトの名無しさん
2020/09/24(木) 18:37:51.09ID:sKL6gd3p cout << ...
がダサいだのprintfが早いだの
程度が低いんだよ
がダサいだのprintfが早いだの
程度が低いんだよ
594デフォルトの名無しさん
2020/09/24(木) 18:48:48.99ID:TdIgAD6o595デフォルトの名無しさん
2020/09/24(木) 18:53:55.27ID:sKL6gd3p 適当に脳内で読み替えとけや無能
こっちはprintfなんてそもそも使わんから詳しいことに興味はない
だからググれって最初に伝えたんだわ
こっちはprintfなんてそもそも使わんから詳しいことに興味はない
だからググれって最初に伝えたんだわ
596デフォルトの名無しさん
2020/09/24(木) 19:02:40.95ID:sKL6gd3p597デフォルトの名無しさん
2020/09/24(木) 19:10:17.44ID:EUYXPM4X ID真っ赤で必死ダナw
598デフォルトの名無しさん
2020/09/24(木) 19:11:45.79ID:sKL6gd3p 逃げるのか?w
599デフォルトの名無しさん
2020/09/24(木) 19:13:39.45ID:sKL6gd3p ご自慢の知識を披露してみろよばかが
600デフォルトの名無しさん
2020/09/24(木) 19:44:29.22ID:sKL6gd3p はい結局にげたー雑魚〜
601デフォルトの名無しさん
2020/09/24(木) 19:56:55.65ID:55R+R5Lh602デフォルトの名無しさん
2020/09/24(木) 20:09:35.67ID:sKL6gd3p printfに脆弱性ある
というのが重要な点なのにあくまでも上げ足取りをするのか
本当にごみしかいないな
というのが重要な点なのにあくまでも上げ足取りをするのか
本当にごみしかいないな
603デフォルトの名無しさん
2020/09/24(木) 20:10:35.38ID:EUYXPM4X ID真っ赤で恥ずかしい奴w
604デフォルトの名無しさん
2020/09/24(木) 20:12:58.68ID:sKL6gd3p なにが恥ずかしいの?IDすぐリセットされるし
605デフォルトの名無しさん
2020/09/24(木) 20:25:09.79ID:7yQWIIk2 ほれぼれする雑魚っぷり
606デフォルトの名無しさん
2020/09/24(木) 20:27:17.41ID:sKL6gd3p お前ほどではないよw
607デフォルトの名無しさん
2020/09/24(木) 20:32:02.13ID:sKL6gd3p こういうのに反応してくるのは雑魚と相場が決まってるからなw
608デフォルトの名無しさん
2020/09/24(木) 20:39:06.34ID:OqVmXa/U609デフォルトの名無しさん
2020/09/24(木) 20:42:06.80ID:sKL6gd3p いや関係ないけど
どうせこいつもわかってないくせに人のこと煽ってるんだろうから
聞いてみたらやっぱ逃げた
どうせこいつもわかってないくせに人のこと煽ってるんだろうから
聞いてみたらやっぱ逃げた
610デフォルトの名無しさん
2020/09/24(木) 20:56:41.05ID:n05mXSO9 printfはバッファオーバーフローの脆弱性を産みやすい
printfはバッファオーバーフローの脆弱性を産みやすい
printfはバッファオーバーフローの脆弱性を産みやすい
煽りモードに入るならボコボコにしてやんよ
printfはバッファオーバーフローの脆弱性を産みやすい
printfはバッファオーバーフローの脆弱性を産みやすい
煽りモードに入るならボコボコにしてやんよ
611デフォルトの名無しさん
2020/09/24(木) 20:59:32.71ID:sKL6gd3p612デフォルトの名無しさん
2020/09/24(木) 21:00:05.83ID:NCTacveT ここまで具体例を示した証拠も反論もなし。
613デフォルトの名無しさん
2020/09/24(木) 22:12:13.40ID:jspEV3AF614デフォルトの名無しさん
2020/09/24(木) 22:18:55.93ID:OqVmXa/U615デフォルトの名無しさん
2020/09/24(木) 22:50:51.72ID:jspEV3AF sprintf()なら有り得る、
希ガス
個人的にはsprintf_s()しか使わないから無用の心配だが
希ガス
個人的にはsprintf_s()しか使わないから無用の心配だが
616デフォルトの名無しさん
2020/09/24(木) 22:53:03.50ID:55R+R5Lh 自分でバッファオーバーフロー言い出しといてなんやねん
617デフォルトの名無しさん
2020/09/24(木) 22:54:48.84ID:jspEV3AF std::ostringstreamは未来
そんなふうに考えていた時期が漏れにもありました、
そんなふうに考えていた時期が漏れにもありました、
618デフォルトの名無しさん
2020/09/24(木) 23:04:17.15ID:lJ1l9qyF619デフォルトの名無しさん
2020/09/24(木) 23:05:16.99ID:jspEV3AF しかしなんでスタックって高位側から低位側に伸びる実装なんだろうな
逆にしたらそれだけで外部入力依存のバッファオーバーフローでexploitされる危険性を半減できるはず…
逆にしたらそれだけで外部入力依存のバッファオーバーフローでexploitされる危険性を半減できるはず…
620デフォルトの名無しさん
2020/09/24(木) 23:16:12.65ID:lJ1l9qyF バイナリエディタ見てみろよ。アドレス高いほうが下だろ。
スタックはちゃんと下から積んでるんだよ。
スタックはちゃんと下から積んでるんだよ。
621デフォルトの名無しさん
2020/09/24(木) 23:45:08.26ID:jspEV3AF ホンマにprintf()でもやれるんや、
https://www.ipa.go.jp/security/awareness/vendor/programmingv2/contents/c906.html
しかし%nはC++11で廃止されたとあるからモダンなC++ではprintf()は安心、
https://www.ipa.go.jp/security/awareness/vendor/programmingv2/contents/c906.html
しかし%nはC++11で廃止されたとあるからモダンなC++ではprintf()は安心、
622デフォルトの名無しさん
2020/09/24(木) 23:46:33.93ID:lJ1l9qyF 安全なライブラリ=チェックが多く遅いライブラリ
C使う意味なくね?
C使う意味なくね?
623デフォルトの名無しさん
2020/09/24(木) 23:48:09.41ID:jspEV3AF 訂正orz、
誤: C++11
正: C11
誤: C++11
正: C11
624デフォルトの名無しさん
2020/09/25(金) 00:19:45.11ID:nCkagqzh >>619
それは昔々、CPUが今よりずっと低能力で、malloc()などをする余力もない時代、
メモリー領域を、普通の変数のワークエリアと、call命令での戻り値アドレスの
記憶のためと、レジスタの保存、復帰(push,pop)用のためのエリアを逆方向
から使うことは、画期的なアイデアだったから。
データ領域は、アドレスの小さい方から、大きいほうへ伸ばして使っていくが、
そうやってるさいにも、call,push,pop命令は使いたいから、そのようにする
以外には当時の非力なCPUには非効率すぎて選択肢が無かった。
今なら、リンクリストや高速なmalloc()などを駆使すれば、別の方法も取れるかも
知れない。
それは昔々、CPUが今よりずっと低能力で、malloc()などをする余力もない時代、
メモリー領域を、普通の変数のワークエリアと、call命令での戻り値アドレスの
記憶のためと、レジスタの保存、復帰(push,pop)用のためのエリアを逆方向
から使うことは、画期的なアイデアだったから。
データ領域は、アドレスの小さい方から、大きいほうへ伸ばして使っていくが、
そうやってるさいにも、call,push,pop命令は使いたいから、そのようにする
以外には当時の非力なCPUには非効率すぎて選択肢が無かった。
今なら、リンクリストや高速なmalloc()などを駆使すれば、別の方法も取れるかも
知れない。
625デフォルトの名無しさん
2020/09/25(金) 00:26:39.90ID:nCkagqzh >>624
[捕捉]
今は、マルチスレッドプログラミングをする際、各スレッドに、それぞれ
別のスタック領域を割り当てるが、その領域の容量は固定サイズ。
固定サイズでも何とかなるのは、メインメモリーが非常に大きくなったためで、
大部分は無駄になっていても、なんとかなってしまうから。
たとえば、関数呼び出しの回数と、ローカルスタック変数の容量を
掛け算したような値を見積もってみれば、とても無駄なスタック領域の
割り当てをしているだろうが、メモリーがふんだんに余る位になっているので
それでも特に問題がなくなってしまった。
ところが、かつてはメモリーが足りなくてどうしようもなかった。
しかも、当然当時はシングルスレッドだった。
なので、データ領域は上から、スタック領域は下から伸ばしていけば、
お互いが衝突するまで使える。これは、ギリギリ限界まで無駄なく
メモリーが使えることを意味する。
[捕捉]
今は、マルチスレッドプログラミングをする際、各スレッドに、それぞれ
別のスタック領域を割り当てるが、その領域の容量は固定サイズ。
固定サイズでも何とかなるのは、メインメモリーが非常に大きくなったためで、
大部分は無駄になっていても、なんとかなってしまうから。
たとえば、関数呼び出しの回数と、ローカルスタック変数の容量を
掛け算したような値を見積もってみれば、とても無駄なスタック領域の
割り当てをしているだろうが、メモリーがふんだんに余る位になっているので
それでも特に問題がなくなってしまった。
ところが、かつてはメモリーが足りなくてどうしようもなかった。
しかも、当然当時はシングルスレッドだった。
なので、データ領域は上から、スタック領域は下から伸ばしていけば、
お互いが衝突するまで使える。これは、ギリギリ限界まで無駄なく
メモリーが使えることを意味する。
626デフォルトの名無しさん
2020/09/25(金) 00:29:23.03ID:iQJ3d1Xe なんかデタラメがいろいろ混じってるぞ。
627デフォルトの名無しさん
2020/09/25(金) 00:30:59.73ID:7nm9kuAr >>624
どこらへんが画期的で効率的なのかkwsk、
普通の変数のワークエリアと逆方向からスタックを伸ばしたところで
使えるメモリが増えるわけでなし…
(スレッドが2本以上あればスタック領域は結局スレッド毎に固定サイズで割り当てるしかない
百歩譲って一つながりのメモリを上と下の両方から使っていったらすばらしいと思えたとしても、
なんでスタックを0番地から上に伸ばしてsbrkが最大アドレスから下に伸びる設計にしなかったのかの
説明にならない
どこらへんが画期的で効率的なのかkwsk、
普通の変数のワークエリアと逆方向からスタックを伸ばしたところで
使えるメモリが増えるわけでなし…
(スレッドが2本以上あればスタック領域は結局スレッド毎に固定サイズで割り当てるしかない
百歩譲って一つながりのメモリを上と下の両方から使っていったらすばらしいと思えたとしても、
なんでスタックを0番地から上に伸ばしてsbrkが最大アドレスから下に伸びる設計にしなかったのかの
説明にならない
628デフォルトの名無しさん
2020/09/25(金) 00:34:29.83ID:nCkagqzh >>625
[もっと捕捉]
今は、MMUを使っており、実際に使ってない仮想メモリー空間には、物理メモリー
を割り当てない。だから、使うまでは物理メモリーは無駄にはならない。
もう一つは、(仮想)アドレス空間自体が飛躍的に大きく取れるようになったことで、
搭載している物理メモリー以上に大きなアドレス空間が使えて、各スレッド
のスタック用に大きめにアドレス空間を確保(commit)しておけるように
なった。
32BIT時代ですら、4GBの仮想アドレス空間が使えたから、アドレス空間自体の
不足は余りおきなくなった。積んでいる物理メモリーよりも大きな空の領域を
各スレッドのスタックに割り当てても、特に問題が無い。
今や64BIT時代。同時に実行するスレッドの個数も増えつつあるが、各スタック
領域の仮想アドレス空間上のサイズを大きくとってもどうってことは無い時代になった。
しかし、かつてはそうではなく、スタックは下から上に伸ばして行き、データ領域
と衝突するまで使うのが良い方法だった。
[もっと捕捉]
今は、MMUを使っており、実際に使ってない仮想メモリー空間には、物理メモリー
を割り当てない。だから、使うまでは物理メモリーは無駄にはならない。
もう一つは、(仮想)アドレス空間自体が飛躍的に大きく取れるようになったことで、
搭載している物理メモリー以上に大きなアドレス空間が使えて、各スレッド
のスタック用に大きめにアドレス空間を確保(commit)しておけるように
なった。
32BIT時代ですら、4GBの仮想アドレス空間が使えたから、アドレス空間自体の
不足は余りおきなくなった。積んでいる物理メモリーよりも大きな空の領域を
各スレッドのスタックに割り当てても、特に問題が無い。
今や64BIT時代。同時に実行するスレッドの個数も増えつつあるが、各スタック
領域の仮想アドレス空間上のサイズを大きくとってもどうってことは無い時代になった。
しかし、かつてはそうではなく、スタックは下から上に伸ばして行き、データ領域
と衝突するまで使うのが良い方法だった。
629デフォルトの名無しさん
2020/09/25(金) 00:47:42.60ID:iQJ3d1Xe >>627
picの変態仕様見れば分かる。汎用機もそうだけどスタック制限あるアーキテクチャが普通だった時代。
しかも0番地から伸ばすとかCPUの仕組みすら知らんレベルだな。割り込みベクタがあったり、プログラムのROMがあったり、
0番地にフリーのRAMなどたいていない。つまり空いてるRAMの下限は開発が終了するまで確定しないこともしばしば。
じゃあいつSP設定値いつ決まるのって話。決まらないんだから一番うしろにして前に進めるのが頭使わずに済む。
ちなみに8086はスタックセグメントあるから。便利だろw
picの変態仕様見れば分かる。汎用機もそうだけどスタック制限あるアーキテクチャが普通だった時代。
しかも0番地から伸ばすとかCPUの仕組みすら知らんレベルだな。割り込みベクタがあったり、プログラムのROMがあったり、
0番地にフリーのRAMなどたいていない。つまり空いてるRAMの下限は開発が終了するまで確定しないこともしばしば。
じゃあいつSP設定値いつ決まるのって話。決まらないんだから一番うしろにして前に進めるのが頭使わずに済む。
ちなみに8086はスタックセグメントあるから。便利だろw
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- アメリカ、入国時に「日本人を含む外国人観光客の最大5年分のSNS履歴の提出」義務化へ 過去10年間に使用のメールアドレスや電話番号等も★2 [Hitzeschleier★]
- オイルマッサージ施術中20代女性にわいせつ行為か セラピストの男(30)を再逮捕 余罪複数とみて警視庁が捜査 [どどん★]
- 【中国外務省】日本への渡航自粛を再度呼びかけ 今度は「地震発生」を理由に [ぐれ★]
- 内閣支持、微減59.9% 5割超が補正予算評価 時事通信世論調査 [どどん★]
- 立憲・小宮山議員、「牛乳=白い水」投稿を削除 批判殺到で「大変失礼申し上げました」 [少考さん★]
- 日本語が話せない「外国籍」の子が急増中、授業がストップ、教室から脱走も…先生にも大きな負担「日本語支援」追いつかず★3 [七波羅探題★]
- 【高市バイク】 ホンダ高級バイク「スーパーカブ110 Lite」を発売。 お値段 34万1000円~ 🛵 [485983549]
- 【悲報】日本人のTikTok収益、ガチで剥奪中wwwwwwwwwwwwwwwwwwwwwwwww [279254606]
- 【悲報】日中戦争5割が賛成、高市キッズたち徴兵へ [834922174]
- 日清オイリオ「オリーブオイルの高騰が落ち着いたのにお前らが買わない!」 [592058334]
- (´・ω・`)ぬくぬくだお
- 【画像】整形カリカリ女が「この画像」にブチギレる理由、謎… [732289945]
