[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 12/03 12:10 / Filesize : 265 KB / Number-of Response : 1010
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C言語なら俺に聞け 156



1 名前:デフォルトの名無しさん [2020/09/28(月) 14:41:30.00 ID:QxfbhGyV0.net]
!extend:checked:vvvvv:1000:512
(新スレ立ての際上記コマンドを2行書き込んでください)
C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
codepad.org/

C11
www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf

C99
www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf
kikakurui.com/x3/X3010-2003-01.html

C FAQ 日本語訳
www.kouno.jp/home/c_faq/

JPCERT C コーディングスタンダード
https://www.jpcert.or.jp/sc-rules/

※前スレ
C言語なら俺に聞け 155
https://mevius.5ch.net/test/read.cgi/tech/1589120427/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured

596 名前:デフォルトの名無しさん mailto:sage [2021/01/22(金) 15:18:29.37 ID:Pa9c7HBM0.net]
>>590
>>583を100回音読してこい

597 名前:デフォルトの名無しさん mailto:sage [2021/01/22(金) 15:22:19.21 ID:/3jYtxszd.net]
主語はOS

598 名前:デフォルトの名無しさん mailto:sage [2021/01/22(金) 15:25:32.00 ID:/3jYtxszd.net]
mallocは単なるトリガー(の1例)

599 名前:デフォルトの名無しさん mailto:sage [2021/01/22(金) 16:21:31.38 ID:Pa9c7HBM0.net]
主語でないと関係しないって?
日本語の勉強からやり直した方がいいと思うよ
結構マジで

600 名前:デフォルトの名無しさん mailto:sage [2021/01/22(金) 16:28:50.78 ID:/3jYtxszd.net]
非制限用法

601 名前:デフォルトの名無しさん mailto:sage [2021/01/22(金) 16:30:53.38 ID:/3jYtxszd.net]
直接関係してなかろうと
(例えば)mallocをトリガーとしてスワップすることは事実

602 名前:デフォルトの名無しさん mailto:sage [2021/01/22(金) 19:42:10.12 ID:Pa9c7HBM0.net]
>>596
頭大丈夫?
そろそろ黙ったほうが良くね?

603 名前:デフォルトの名無しさん mailto:sage [2021/01/22(金) 20:55:52.26 ID:red8nkhVM.net]
確かに直接関係はしないな
syscallというレイヤーが挟まるから

で?それがどうした?

604 名前:デフォルトの名無しさん mailto:sage [2021/01/22(金) 22:55:39.06 ID:Pa9c7HBM0.net]
>>597
> (例えば)mallocをトリガーとしてスワップすることは事実
するとは限らんしそもそも仮想記憶のない環境もあるし何が事実だかw



605 名前:デフォルトの名無しさん mailto:sage [2021/01/22(金) 23:26:46.95 ID:LtnZZu+T0.net]
mallocがスワップアウト要求すんのか? ページアウトですらなく?

606 名前:デフォルトの名無しさん [2021/01/23(土) 00:33:31.85 ID:MUxSQoqh0.net]
mallocは常に成功する、問題はそのメモリにアクセスした時

607 名前:デフォルトの名無しさん mailto:sage [2021/01/23(土) 00:37:30.76 ID:QrEIYEWsM.net]
Cでマルチスレッドなプログラム書くときのデザインパターンというか、オススメの書き方って何かある?

608 名前:デフォルトの名無しさん [2021/01/23(土) 00:40:17.93 ID:MUxSQoqh0.net]
>>603
pthread

609 名前: mailto:sage [2021/01/23(土) 00:47:46.15 ID:JHWvmAOA0.net]
>>603
私は c++11 以降に移行しました、言語が MT をサポしてくれているのはありがたいです‥

610 名前:デフォルトの名無しさん mailto:sage [2021/01/23(土) 03:11:07.99 ID:WU8kpFS10.net]
>>600
mallocをコールした結果スワップすることがあるのは事実

611 名前:デフォルトの名無しさん mailto:sage [2021/01/23(土) 03:12:25.03 ID:WU8kpFS10.net]
pthreadやc++11がデザインパターン?

612 名前:デフォルトの名無しさん mailto:sage [2021/01/23(土) 07:30:28.10 ID:4VL29Q1J0.net]
>>606
>>602

613 名前:デフォルトの名無しさん mailto:sage [2021/01/23(土) 08:27:23.59 ID:WU8kpFS10.net]
>>602
それは実装次第

614 名前:デフォルトの名無しさん mailto:sage [2021/01/23(土) 08:43:07.74 ID:4VL29Q1J0.net]
>>609
だから>>583の様に言い切る奴はアホだ
って話でしょ



615 名前:デフォルトの名無しさん mailto:sage [2021/01/23(土) 08:50:59.97 ID:pbmfU4sr0.net]
>>602
どんな実装でも仮想アドレスに連続領域が確保できなかったらmalloc呼び出し時点で失敗するんじゃないの?

616 名前:デフォルトの名無しさん [2021/01/23(土) 09:44:47.82 ID:MUxSQoqh0.net]
>>611
実際にアクセスする時には仮想連続領域があるかもしれないじゃん

617 名前:デフォルトの名無しさん [2021/01/23(土) 09:45:23.82 ID:MUxSQoqh0.net]
んで、そんな時こそのスワップですよw

618 名前:デフォルトの名無しさん mailto:sage [2021/01/23(土) 10:27:22.67 ID:4VL29Q1J0.net]
>>611
オーバーレイで仮想空間を拡大する実装かもしれんw
オーバーヘッドがでかすぎるしそもそも今時の環境でそこまでする必要があるとは思えないけど

>>612-612
仮想アドレスと物理アドレスの区別ついてる?

619 名前:デフォルトの名無しさん [2021/01/23(土) 10:29:19.13 ID:MUxSQoqh0.net]
>>614
バカなの?

620 名前:デフォルトの名無しさん [2021/01/23(土) 10:31:56.75 ID:MUxSQoqh0.net]
>>611
とりあえず割り当てちゃうんだよ

621 名前:デフォルトの名無しさん [2021/01/23(土) 10:36:34.75 ID:MUxSQoqh0.net]
アプリとかプログラムのcodeだって全部メモリ上にロードされてないからな、アクセスした時に、あっそこにはプログラム無いから今からロードするわ〜、って感じだから

622 名前:デフォルトの名無しさん mailto:sage [2021/01/23(土) 12:00:13.95 ID:4VL29Q1J0.net]
>>615
ネタに突っ込んでるのか、仮想アドレスも理解できてないことを指摘されて悔しいのかをはっきりさせてくれw

623 名前:デフォルトの名無しさん mailto:sage [2021/01/23(土) 12:08:04.07 ID:sAz3YI3ta.net]
>>616
仮想アドレスに連続した空き領域が足りないのに、とりあえずで何を割り当てるんだよ

624 名前:デフォルトの名無しさん mailto:sage [2021/01/23(土) 12:15:26.28 ID:X7rXBKGs0.net]
メモリーマップトファイルでペタバイトの巨大なプログラムを実行するんだい



625 名前:デフォルトの名無しさん mailto:sage [2021/01/23(土) 12:55:57.12 ID:pbmfU4sr0.net]
>>614
俺にレス?なんか間違ってるか?

626 名前:デフォルトの名無しさん mailto:sage [2021/01/23(土) 12:57:17.63 ID:pbmfU4sr0.net]
>>621
おっと612か。すまんかった

627 名前:デフォルトの名無しさん mailto:sage [2021/01/23(土) 15:00:04.42 ID:E2XTqnevd.net]
>>610
言いきってるように見える?
おれには初心者が「大体こんな感じ?」って言っただけにしか見えないんだけど

意味的には大体合ってるのに
全然違う
とか

最近のOSとしか書いてないんだし

技術的な話をしたいならせめてOSを特定しようよ
勝手に特定のOSを前提にした視野が狭い人みたいだから

628 名前:デフォルトの名無しさん mailto:sage [2021/01/23(土) 15:27:34.50 ID:4VL29Q1J0.net]
>>623
ああ、>>583が言い切ってるは言い過ぎだな
その後の>>586がアホだって言い直すわ

629 名前:デフォルトの名無しさん mailto:sage [2021/01/23(土) 15:31:32.55 ID:E2XTqnevd.net]
いやどう見ても>>584がアホ

630 名前:デフォルトの名無しさん mailto:sage [2021/01/23(土) 16:34:32.36 ID:LPDMRZtK0.net]
スワップファイルが満杯でmallocが失敗なんて状況に陥る前に対策するだろjk

631 名前:デフォルトの名無しさん mailto:sage [2021/01/23(土) 16:57:50.33 ID:5Na5U87Z0.net]
linux って簡単に process 殺すよね
知らんふりも得意

632 名前:デフォルトの名無しさん mailto:sage [2021/01/23(土) 18:17:32.24 ID:4VL29Q1J0.net]
>>625
アホと言うなら具体的にどこがアホって書かないと恥ずかしいだけだぞ
一応ここ技術板だし

633 名前:619 [2021/01/24(日) 15:57:31.34 ID:5JJAlISZ0.net]
>>619
64bit時代に仮想アドレスに連続した空き領域が無くなることなんか現実に無いだろ

634 名前:デフォルトの名無しさん mailto:sage [2021/01/24(日) 16:53:19.15 ID:0zbFdmBp0.net]
>>629
それなら>>616の時点でそう書けばいいだろう。まあC言語の用途を考えれば後付けで64bitに限った話にしようとするのは馬鹿げているが。
で、>>616のとりあえずって結局何だったの?



635 名前:デフォルトの名無しさん [2021/01/24(日) 17:27:58.38 ID:5JJAlISZ0.net]
>>630
常に成功を返す

636 名前:デフォルトの名無しさん mailto:sage [2021/01/24(日) 17:35:27.66 ID:1wsdfsyQ0.net]
実際にアクセスしたときにページフォルト起こしてページを割り当てるとして、そのアドレスに
連続した空きがない状態じゃメモリ割り当てても使えないじゃん。

637 名前:デフォルトの名無しさん [2021/01/24(日) 22:06:29.57 ID:5JJAlISZ0.net]
>>632
日本語が変だぞw

638 名前:デフォルトの名無しさん [2021/01/24(日) 22:09:51.26 ID:5JJAlISZ0.net]
PFでメモリ割り当てられなきゃ、リスケジューリングだアホ

639 名前:デフォルトの名無しさん mailto:sage [2021/01/24(日) 22:14:36.76 ID:1wsdfsyQ0.net]
割り当てられたとしても使えないと言っているんだが?それとも既に他で使われている領域を上書きするか?

640 名前:デフォルトの名無しさん [2021/01/24(日) 22:18:58.47 ID:5JJAlISZ0.net]
>>635
4Kページ割り当てて使えないって何なんだよ・・

641 名前:デフォルトの名無しさん mailto:sage [2021/01/24(日) 22:24:12.86 ID:1wsdfsyQ0.net]
アドレスに連続した空きがない状態だよ。最初からその話をしてるんだろ?

642 名前:デフォルトの名無しさん [2021/01/24(日) 22:28:07.43 ID:5JJAlISZ0.net]
>>637
4K+1byte目をアクセスしたらまたPFだから、MMUの勉強したら?

643 名前:デフォルトの名無しさん mailto:sage [2021/01/24(日) 22:41:44.60 ID:1wsdfsyQ0.net]
その4Kの中に要求するサイズの連続領域が取れない場合の話だよ。
いったいなにを「とりあえず」割り当てるんだか。

644 名前:デフォルトの名無しさん mailto:sage [2021/01/24(日) 23:52:48.21 ID:5uhuun5ZK.net]
ページングの話とmallocの領域管理の話がごっちゃになってるな

ページアウトされた領域に空きがあるかどうかはページインしなきゃわからないかもしれないが、そしたら他のページを探しに行くだけ

最終的にどこにも空きがなけりゃmallocがエラーを返す
空き容量が十分あっても希望するサイズの連続領域がないなんてケースは実際にもあり得る



645 名前:デフォルトの名無しさん [2021/01/25(月) 00:08:13.28 ID:U3eoM7Fp0.net]
仮想アドレスなんだから使う時まで要らないんだから、mallocは必ず成功する。
昨今のOSは全てそう実装されてる。

646 名前:デフォルトの名無しさん mailto:sage [2021/01/25(月) 00:11:52.23 ID:WuLpUwZU0.net]
オーバーブッキングを平気でするホテルみたいだな

647 名前:デフォルトの名無しさん mailto:sage [2021/01/25(月) 01:00:15.57 ID:8MmNCL2s0.net]
>>641
バカ?

648 名前:デフォルトの名無しさん [2021/01/25(月) 01:17:43.98 ID:U3eoM7Fp0.net]
iOSのreusableCellの取得も必ず成功するからforce unwrapできるし

649 名前:デフォルトの名無しさん mailto:sage [2021/01/25(月) 07:05:04.38 ID:HugL0xWrM.net]
>>641
仮想アドレスを使わないOSもあるんだが
まあ安易に「全て」とか使ってるからレス乞食なんだろうな

650 名前:デフォルトの名無しさん mailto:sage [2021/01/25(月) 08:02:50.43 ID:dmbNtT1m0.net]
>>641
勉強しろと言った本人が理解していないのが丸わかり。
使う時まで要らないのは物理メモリであってmallocの時点で仮想アドレスは割り当てなきゃならん。
もし仮想アドレスに空きがなけりゃ「とりあえず割り当てる」なんてのも無理。

651 名前:デフォルトの名無しさん mailto:sage [2021/01/25(月) 09:02:02.61 ID:+X0AlmLXK.net]
実際「mallocは常に成功する」とか根拠なく信じ込んでる奴にはシステム開発は任せられんよ
あとで痛い目みる

652 名前:デフォルトの名無しさん mailto:sage [2021/01/25(月) 10:01:03.33 ID:NuAiBZ6D0.net]
>mallocは常に成功する
Win98SEで失敗したしたことあるわ。

653 名前:デフォルトの名無しさん mailto:sage [2021/01/25(月) 10:44:35.68 ID:MIcmX8A+0.net]
 ハードがMMUで物理的に管理するメモリ上限とか、OSが管理する上限とか、論理上いつか確保出来ない状況は絶対来るの分かっているけれど、そこでエラー起こされると打つ手がない(思い付かない)から、そのまま落ちてもらう。
 俺が知らないだけで、良い回避方法とかあるのかな?

654 名前:はちみつ餃子 mailto:sage [2021/01/25(月) 11:32:21.69 ID:ktS6mGMX0.net]
>>649
・ オーバーコミット機能はオフにする
・ malloc (等) がエラーを返すかチェックを怠らない
・ 終了処理にどうしても必要なメモリは事前に確保しておいて他に使わない



655 名前:デフォルトの名無しさん mailto:sage [2021/01/26(火) 07:53:24.98 ID:ZI8ZD6Xld.net]
非常用のメモリを取っとくのは
大昔から当たり前の手法だね

656 名前:デフォルトの名無しさん mailto:sage [2021/01/26(火) 09:07:24.49 ID:7OslGgb50.net]
mallocを信じて生きていけばいいさと 君は叫んだだろう

657 名前:はちみつ餃子 mailto:sage [2021/01/26(火) 10:29:56.18 ID:xZCVqJnF0.net]
>>652
https://www.youtube.com/watch?v=dAs2yQUNkdU

658 名前:デフォルトの名無しさん mailto:sage [2021/01/26(火) 11:06:15.63 ID:CnGywsMw0.net]
メモリ不足だと表示して終了しちゃいかんのか?

659 名前:はちみつ餃子 mailto:sage [2021/01/26(火) 11:51:32.15 ID:xZCVqJnF0.net]
>>654
それでいい状況ならそれでいいんだよ。
それじゃ駄目なときの話をしてる。

660 名前:デフォルトの名無しさん mailto:sage [2021/01/26(火) 12:18:24.13 ID:nusF9BATd.net]
車を運転してたら
「メモリ不足です」と表示されてブレーキが効かなくなった

冷蔵庫が「メモリ不足です」と表示されて止まっていた

ああメモリ不足ならしょうがない
って思う人いるかな?

661 名前:デフォルトの名無しさん mailto:sage [2021/01/26(火) 12:24:58.20 ID:qqWW8hOx0.net]
航空機搭載システムなんかは動的メモリ割り当て自体を禁止してるそうな
でもアルゴリズムによっては動的メモリ割り当てが本質的なこともあるだろうし
事前割り当てしたところで、自前でmymallocを実装するってだけな気はするし
ミッションクリティカルなアプリがどうやってるかはちゃんと調べないと判らんね

662 名前:デフォルトの名無しさん mailto:sage [2021/01/26(火) 12:29:47.88 ID:nusF9BATd.net]
航空機なんて特別な例を出さなくても
身の回りの電気製品でソフト要因のエラーが許される物なんてなかなか無いような気がする

663 名前:デフォルトの名無しさん mailto:sage [2021/01/26(火) 12:41:48.87 ID:Ab88y5Cj0.net]
>>657
オーバーフローは危険なのでスタックの使用も禁止します

664 名前:デフォルトの名無しさん mailto:sage [2021/01/26(火) 12:49:59.07 ID:nusF9BATd.net]
条件を満たせは静的解析でスタック使用量はわかる
整数型はオーバーフローして危険だから禁止



665 名前:はちみつ餃子 mailto:sage [2021/01/26(火) 13:32:22.24 ID:xZCVqJnF0.net]
そういえば何の事例だったかでループも禁止 (停止性の証明が難しいので) とかいうのは聞いたことがあるな。

666 名前:デフォルトの名無しさん mailto:sage [2021/01/26(火) 13:33:43.60 ID:cSn18yXwM.net]
>>659
再帰禁止とか組み込みなら珍しくないぞ

667 名前:デフォルトの名無しさん mailto:sage [2021/01/26(火) 14:31:35.84 ID:46etcFxHd.net]
>>661
ループ禁止でコードを組める気がしないのだが
処理したらCPUリセットするの?

ループ以外に何か禁止な条件があるはず

668 名前:デフォルトの名無しさん mailto:sage [2021/01/26(火) 14:35:21.22 ID:46etcFxHd.net]
ヒープ禁止は普通にある
禁止というかそもそもヒープ用にメモリが無いとか
設計方針でヒープモジュールを搭載しないとか
あとは確保オンリーなヒープってのもある

PICとかだとハード的に再帰が難しいとか

669 名前:デフォルトの名無しさん [2021/01/26(火) 21:31:25.38 ID:INqgRhQd0.net]
JALの航空管制制御のプログラム作ったことあるけど、
1ルーチンコードサイズ4KBまでIBM3090アセンブラ
ループ処理などなく、また呼ばれる
可愛い平さん元気かなぁ・・

670 名前:デフォルトの名無しさん [2021/01/26(火) 21:32:25.57 ID:INqgRhQd0.net]
手塚さんとかも綺麗だったな・・おれまだ学生だったw

671 名前: mailto:sage [2021/01/26(火) 23:53:23.00 ID:uzBXnria0.net]
>>653
コード進行が凄い曲ですね‥‥ギターコードが書いている楽譜ってないですかね?

672 名前:デフォルトの名無しさん mailto:sage [2021/01/27(水) 00:01:47.99 ID:fhlKtwwY0.net]
上の空で書いていたのか

673 名前:デフォルトの名無しさん mailto:sage [2021/01/27(水) 07:49:16.31 ID:or8n1kaA0.net]
8/16bit時代のハードみたいに起動時にメモリサイズやエラーチェックしてワークエリアサイズ固定で設計するだけだわな。
そういやぁある記事で80286って工業用途を想定してて、エラーが発生して停止したら電源入れ直す以外に再起動できないとか言ってたな。

674 名前:デフォルトの名無しさん mailto:sage [2021/01/27(水) 07:52:13.49 ID:MIG3AZ730.net]
>>665
ルーチンの呼び元はループ、もしくはループ相当の動きをしてるわけだよね

ループがなければ無限のサイズのコードじゃ無い限り動き続けるのは不可能じゃ?



675 名前:デフォルトの名無しさん mailto:sage [2021/01/27(水) 07:59:19.27 ID:MIG3AZ730.net]
>>667
非常に簡単なのしか使ってないんで耳コピ簡単じゃ?

676 名前:デフォルトの名無しさん mailto:sage [2021/01/27(水) 10:55:52.75 ID:9MA4/mbB0.net]
>656
>「メモリ不足です」と表示されてブレーキが効かなくなった
上級国民が大喜びな仕様だな。

メモリ不足になるような仕様を避けるのが当然で、
それでも起きるなら安全に停止できる機能を搭載するだろ。
とりあえず電源喪失状態でもブレーき利くようにするとか。


そういやぁどっかの列車で安全装置の故障で自動停車されなくて事故ったってのあって、
安全装置からの信号がONになった時にブレーキが作動するって仕様になってたのを
安全装置からの信号が来なくなったら(ずっと信号ONって不具合もかあるだろうから通信のやり取りでもあるのかな)
ブレーキ作動させるようになったって聞いたわ。

677 名前:デフォルトの名無しさん [2021/01/27(水) 11:34:46.40 ID:cJSBZXf90.net]
>>667
Monacaの田中秀和って好き?

678 名前:デフォルトの名無しさん [2021/01/27(水) 12:05:51.10 ID:isvLWJ6Q0.net]
>>656
飯塚会長なら言いそうだ

679 名前:デフォルトの名無しさん [2021/01/27(水) 12:09:55.82 ID:cJSBZXf90.net]
>>662
組み込みが再帰禁止なのは
スタック段数が少な過ぎるからじゃないんですか
>>659 と同じことを言ってるだけと思いますが

680 名前:デフォルトの名無しさん [2021/01/27(水) 12:12:51.81 ID:cJSBZXf90.net]
>>663
常にHALT+割り込みのみで書かれたものはあったはず

681 名前:デフォルトの名無しさん mailto:sage [2021/01/27(水) 12:27:46.11 ID:gQSND64l0.net]
>>675
その理由もあるけどスタックの見積がやりにくいからという理由もある
>>661に類似だけど停止条件トチッたら容易にスタック食いつぶすし

682 名前:デフォルトの名無しさん mailto:sage [2021/01/27(水) 13:33:58.28 ID:vpj9vmrAd.net]
>>662
貧乏マイコンは数段程度しかないから関数の中で関数呼ぶのすら危うかったりするな…
高級マイコンは16段の見たことあるが

683 名前:デフォルトの名無しさん mailto:sage [2021/01/27(水) 13:57:29.31 ID:DAR3YVvc0.net]
HALTと割り込みでもいつかはどこかで最初からの繰り返しループにならない?
割り込み中でステート管理して、スタックを操作して最初に戻るとか?
出来ないマイコンもありそうだけど

684 名前:デフォルトの名無しさん mailto:sage [2021/01/27(水) 14:01:16.93 ID:N60gZ7990.net]
そういう制御込みでコンパイルして吐き出してくれるなら Cの選択肢もあるだろうけど
それが期待できないとなると アセンブラしかない ってことになるのかな



685 名前:デフォルトの名無しさん mailto:sage [2021/01/27(水) 17:35:31.51 ID:6jCnxoTKd.net]
>>678
PICでしょ
一番安いヤツはハードウェアスタック2段

686 名前:デフォルトの名無しさん mailto:sage [2021/01/27(水) 17:36:57.11 ID:6jCnxoTKd.net]
>>679
手段は色々あっても
ループはループ
と思う

687 名前:デフォルトの名無しさん mailto:sage [2021/01/27(水) 20:45:42.53 ID:gQSND64l0.net]
>>679
まあどこかでループは必要だわな
>>661はそういうループはきっちり検証して個々の処理ルーチンではループ禁止っていう話かと

688 名前:デフォルトの名無しさん mailto:sage [2021/01/27(水) 23:07:06.58 ID:7vi5L3Y30.net]
初心者です
変数に&を付けてメモリのアドレスを表示させるプログラムを実行して(0x7efe61e298d8←こんな感じ?)
その後1時間とか経過して別のプログラムでメモリ「0x7efe61e298d8」に格納されたものを表示させることってできるんですかね?

689 名前:デフォルトの名無しさん mailto:sage [2021/01/27(水) 23:11:59.94 ID:fhlKtwwY0.net]
OSが何かにもよるけど
一般論としては出来る。出来るが、
成功するかどうかは分からない

690 名前:デフォルトの名無しさん mailto:sage [2021/01/27(水) 23:34:48.42 ID:XppLd9do0.net]
MS-DOSのTSRか

691 名前:デフォルトの名無しさん mailto:sage [2021/01/27(水) 23:52:57.86 ID:7vi5L3Y30.net]
C言語というよりOS側の問題なんですね
ありがとうございます

692 名前:デフォルトの名無しさん mailto:sage [2021/01/28(木) 05:11:34.57 ID:52TUUvk80.net]
>>681
それ、スタックを使って構造化プログラミングを実現した言語であるCを使う利点が一切ないような…

組み込み/マイコン向け言語でスタックを使わず構造化プログラミングを実現するにはcpsスタイルの言語がベストなはず、lisp方言schemeにはそれ向けのサブセット仕様もあるし、ホビー界隈ではそこそこ使われてる模様
(但し主なpc向け実装は、アーキテクチャに合ったスタックによるcps実装が多い、念のため)

forthも消えてしまったなあ
C換算百行未満でブートストラップ&セルフホスト処理系が書け、OS機能も兼ね、規格にあるライブラリ関数も改変無しコピペで動く移植性の良さ
c台頭までは組み込み/マイコン界隈を寡占してたんだが
ちゃんとスタック指向&構造化言語だけど、ハードウェアスタックに頼らないので相性がよい
唯一の敗因はlisp以上に深淵なことだな…

cは既に国際語になってしまったので、取り敢えず分かるcで書く、ってのがcが使われる唯一の理由だと思う

693 名前:デフォルトの名無しさん mailto:sage [2021/01/28(木) 05:58:13.87 ID:pfPCg+P40.net]
動的確保なしの32ビットマイコン使って飯食ってるけど、さすがに再起は使わんが、
好きなだけ関数呼び出し深く出来るだけでも恵まれてたんだな。スタックオーバーフローは一応気にしないといかんけど。

ミッションクリティカルなコードなんてゼッテー無理だわw Adaとか使われるんだっけ?と思ったら微妙に廃れ気味なんね。よーしらんけど。

694 名前:デフォルトの名無しさん mailto:sage [2021/01/28(木) 08:01:19.64 ID:Z02UUfjqK.net]
>>684
たぶん意味がない。
今時のOSでは、別々のプログラムからメモリ「0x7efe61e298d8」を参照しても同じ内容にならない。「仮想アドレス」でぐぐれ。
プログラム間で変数をやりとりしたければ、共有メモリを使う方法がある。



695 名前:デフォルトの名無しさん mailto:sage [2021/01/28(木) 08:05:06.42 ID:c7JCU6ma0.net]
今時のOS,CPUだとアクセスした瞬間に例外発生する

696 名前:はちみつ餃子 mailto:sage [2021/01/28(木) 10:46:55.99 ID:vBYpvnJx0.net]
>>684
(現代的なコンピュータアーキテクチャでは) 各プロセスのアドレス空間が独立していて、
あるプロセスから見えているメモリの内容と他のプロセスから見えるそれは別物なんだよ。
他のプロセス (が持っているリソース) にアクセスしたりデバイスをコントロールするには
OS に依頼して仲介してもらうという形をとる。

プロセス間でメモリの共有をすることも可能だが、
それもあらかじめ OS に伝えて共有する実体 (物理メモリ) をそれぞれのメモリ空間にマッピングしてもらう形
なので、それを利用するプロセス同士が事前に共有に同意した状態である必要がある。

あるプロセスが自分用に割り当てられたリソース以外にはそう自由にはアクセスできないんだ。
それがセキュリティというものだよ。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<265KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef