- 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
- 361 名前:デフォルトの名無しさん mailto:sage [2020/12/25(金) 12:31:04.53 ID:0FtKncKUM.net]
- 目から鱗どころか、天が落ちるぐらい面白い説明ができないのか。
無芸な奴らだ。
- 362 名前:デフォルトの名無しさん mailto:sage [2020/12/25(金) 12:39:14.80 ID:3NwCUk3p0.net]
- ポインタ int *p; はインクリメント可能で p++ は合法
配列 int a[6]; はインクリメント不可能で a++ はエラーになる
- 363 名前:デフォルトの名無しさん mailto:sage [2020/12/25(金) 12:51:59.76 ID:D8aGfpPud.net]
- >>358に期待
- 364 名前:デフォルトの名無しさん [2020/12/25(金) 13:23:43.17 ID:9Fso0P460.net]
- >>354
メモリ配置の連続性はどちらも保障されていることで良いですか?
- 365 名前:デフォルトの名無しさん mailto:sage [2020/12/25(金) 14:43:22.97 ID:3NwCUk3p0.net]
- 配列は先頭から確保された領域の次のところを指せるまでは連続性が保障されてるんじゃなかったかな
規格あたるのはまかせた (malloc の戻りは… 配列に準じるように実装されてそうではある)
- 366 名前:デフォルトの名無しさん mailto:sage [2020/12/25(金) 14:54:43.85 ID:qJluI3Ne0.net]
- >>361
プログラムからの見た目はどちらも連続。 物理的に連続させたいならdma メモリ 確保とかでググる
- 367 名前:デフォルトの名無しさん mailto:sage [2020/12/25(金) 15:09:30.51 ID:2V7uRClp0.net]
- int a[6];はローカル変数ならスタック領域に確保、グローバル変数や
int *a = malloc(6 * sizeof(int));はヒープ領域に確保 でいい?
- 368 名前:デフォルトの名無しさん mailto:sage [2020/12/25(金) 15:19:15.56 ID:qJluI3Ne0.net]
- ダメ
グローバル変数はデータ領域とかbss領域とかいろいろ
- 369 名前:デフォルトの名無しさん mailto:sage [2020/12/25(金) 18:54:05.01 ID:Tea3EQhG0.net]
- アドレス見ない, かつ定数だと何処にも領域取らない可能性まである
- 370 名前:デフォルトの名無しさん mailto:sage [2020/12/25(金) 20:30:05.07 ID:EiswCiht0.net]
- そんなこと言い出したら
ローカル変数だってスタックじゃないかもしれない
- 371 名前:デフォルトの名無しさん mailto:sage [2020/12/25(金) 20:39:01.52 ID:MidTJiO80.net]
- どこにあるかよりどれだけ生きているかの生命期間が大事ね
- 372 名前:デフォルトの名無しさん mailto:sage [2020/12/25(金) 21:22:39.71 ID:EiswCiht0.net]
- 速度も
- 373 名前:デフォルトの名無しさん mailto:sage [2020/12/25(金) 21:23:50.85 ID:EiswCiht0.net]
- 生命期間も実際はC言語の文法通りじゃない
- 374 名前:デフォルトの名無しさん mailto:sage [2020/12/26(土) 05:33:54.37 ID:ekLZAtHZ0.net]
- >>361
> 7.20.3.3 malloc 関数 > 機能 malloc 関数は,大きさがsize であるオブジェクトの領域を割り付ける。 領域とは連続した区間をいう
- 375 名前:デフォルトの名無しさん mailto:sage [2020/12/26(土) 07:58:20.12 ID:J4yOWW3+0.net]
- メモリ(DRAM)上は連続してるとは限らない
C言語上連続として扱えるというだけ
- 376 名前:デフォルトの名無しさん mailto:sage [2020/12/26(土) 08:19:43.84 ID:ekLZAtHZ0.net]
- それを言うなら仮想記憶だろ
ページ境界をまたぐ場合実記憶が連続しているとは限らない その昔、ビット幅1bitのDRAMを8個パラってるのがあったけど だから何って話 それ言い出したらメモリセルのキャパシタは隣接してるのか
- 377 名前:デフォルトの名無しさん mailto:sage [2020/12/26(土) 08:29:01.69 ID:hSiLuJt/d.net]
- スレタイの俺って誰ですか?
- 378 名前:デフォルトの名無しさん mailto:sage [2020/12/26(土) 09:41:05.55 ID:Mx49Y/J60.net]
- >>373
> それ言い出したらメモリセルのキャパシタは隣接してるのか してないよ、アドレス線が入れ替わってる なのでメモリーテスターはアドレス線を入れ替える機能がついてたりする
- 379 名前:デフォルトの名無しさん mailto:sage [2020/12/26(土) 10:40:07.64 ID:IfMxsBFTd.net]
- >>366を言い出したからまねして見ただけ
- 380 名前:デフォルトの名無しさん mailto:sage [2020/12/26(土) 12:41:26.45 ID:0+ArpHnq0.net]
- 実記憶も連続していない
時々意識不明になってるはず ただ、その時の記憶がないだけ
- 381 名前:デフォルトの名無しさん mailto:sage [2020/12/28(月) 07:49:35.18 ID:LdveQEJ20.net]
- 面倒くさい、特異な、一般人には無縁の仕様を考慮するのが当たり前って感じに持ち出して否定するから初心者が逃げていく・・・。
- 382 名前:デフォルトの名無しさん mailto:sage [2020/12/28(月) 08:44:26.16 ID:G7B9oAoL0.net]
- Cでプログラミングする時に領域の連続性を気にするのは果たして初心者なのだろうか(´・ω・`)
- 383 名前:デフォルトの名無しさん mailto:sage [2020/12/28(月) 09:28:54.37 ID:Q5Pp+CI0a.net]
- Cでどのくらいできれば
実際役に立つレベルでしょうか?
- 384 名前:デフォルトの名無しさん mailto:sage [2020/12/28(月) 09:45:26.51 ID:ErVwTltE0.net]
- >>380
Cは言語仕様は小さいし重要なのはC自体が使えることではなくCを使ってその先で何をするかだから、C言語自体の基本的な仕様は完全にマスタしてるくらいでないとわざわざCを使う意味はないかなと思う
- 385 名前:デフォルトの名無しさん [2020/12/29(火) 06:32:49.03 ID:NanqjdNB0.net]
- iZ-Cのサンプルプログラム書き始めたので見てね。
https://sunasunax.hatenablog.com
- 386 名前:デフォルトの名無しさん mailto:sage [2020/12/29(火) 08:44:05.91 ID:gCTQzk+K0.net]
- >>379
デバイスドライバのぉ バッファをぉ 確保するときとかぁ ドキドキしちゃうぅ 初心者ですっ❤
- 387 名前:デフォルトの名無しさん mailto:sage [2020/12/31(木) 07:46:12.94 ID:mJm7tBE2d.net]
- >>361
mallocはNULLを返すこともあるので その場合は当然連続性は保証されない そのエラー処理も書いておかないといけない
- 388 名前:デフォルトの名無しさん mailto:sage [2020/12/31(木) 07:51:45.82 ID:/Sdg/sCQ0.net]
- mallocがNULLを返した場合は
割り付けが行われていないので 連続でも不連続でもない
- 389 名前:デフォルトの名無しさん mailto:sage [2020/12/31(木) 07:55:07.88 ID:/Sdg/sCQ0.net]
- 配列は連続領域が前提だから
E1[E2]が*(E1+E2)と等価となる 構造体も連続領域が前提だからこそ 配列にすることができる 不連続領域はリストや二分木などで むろん言語自体が提供するのではなく 言語を使ってプログラマが構築するものだ
- 390 名前:デフォルトの名無しさん mailto:sage [2020/12/31(木) 12:57:09.96 ID:mJm7tBE2d.net]
- >>354
さらに言うなら グローバル配列はコンパイル時に総数を決定しなければならないが ローカル配列とmallocを使った場合は 最初に人数を入力し、それに合わせた数の名前配列を確保するような作り方ができる ただしあまりにも大きいとローカルはスタックが溢れるしmallocはNULLを返す
- 391 名前:デフォルトの名無しさん mailto:sage [2020/12/31(木) 18:54:42.23 ID:/Sdg/sCQ0.net]
- mallocがNULLを返すのを実際に目撃したやついる?
malloc(2147483647)みたいなわざとらしい実験じゃなく実用で
- 392 名前:デフォルトの名無しさん mailto:sage [2020/12/31(木) 19:17:26.57 ID:lvvsunYH0.net]
- いますよ。
- 393 名前:デフォルトの名無しさん mailto:sage [2020/12/31(木) 19:34:52.29 ID:1/HNqY6i0.net]
- 目撃とかはよーわからんけど実用プログラムだとアロケーション失敗でログ採ったりしてるからそういうログは見たことあるよ
- 394 名前:デフォルトの名無しさん mailto:sage [2020/12/31(木) 20:41:44.50 ID:+fx38Mty0.net]
- 仮想記憶とか無いOSだとあっさり NULL 返してたな
- 395 名前:はちみつ餃子 mailto:sage [2020/12/31(木) 23:27:44.16 ID:xpX6Z+OE0.net]
- その質問を見てふと思ったことがあるんで便乗質問。
純粋にメモリが足りない (断片化で連続領域がないという場合を含む) という以外で malloc がエラーを返すことってある? バッファオーバーランとかでめちゃくちゃに書き換えて管理の整合性が壊れたとかいうのは無視して あくまでアプリケーションとしては C の仕様に則っているという前提で。
- 396 名前:デフォルトの名無しさん mailto:sage [2021/01/01(金) 00:09:31.83 ID:E41TLeHr0.net]
- 組み込みのちっちゃなマイコンなら普通
- 397 名前:デフォルトの名無しさん mailto:sage [2021/01/01(金) 00:12:43.64 ID:mwYi2zym0.net]
- マルチスレッドでヒープ領域が排他制御で使えないってのはありうる?
- 398 名前:デフォルトの名無しさん mailto:sage [2021/01/01(金) 00:20:48.66 ID:E41TLeHr0.net]
- さあ
- 399 名前:デフォルトの名無しさん mailto:sage [2021/01/01(金) 00:21:33.85 ID:FRLcRufg0.net]
- 吸い込んでくれ
- 400 名前:デフォルトの名無しさん mailto:sage [2021/01/01(金) 00:34:01.79 ID:ufA+vsC20.net]
- >>392 メモリクォータ違反とか?
- 401 名前:蟻人間 mailto:age [2021/01/01(金) 00:36:53.19 ID:cLHhn9Dx0.net]
- >>394
「malloc マルチスレッド」で検索すれば? 知らんけど。
- 402 名前:デフォルトの名無しさん mailto:sage [2021/01/01(金) 01:47:49.68 ID:gWHeIT9l0.net]
- >388
Win98か2000の頃にあったわ。 1kバイトぐらいのを数万回(ファイル数)mallocやろうとしたらNULL返した。 XPで試したらエラー出なかったけど。
- 403 名前:デフォルトの名無しさん mailto:sage [2021/01/01(金) 05:55:11.31 ID:ihSnxU6O0.net]
- 逆にメモリ不足以外でNULL返すことってあるのか?
- 404 名前:デフォルトの名無しさん mailto:sage [2021/01/01(金) 06:25:04.97 ID:DIBn3EXs0.net]
- malloc(0)とか
- 405 名前:デフォルトの名無しさん mailto:sage [2021/01/01(金) 12:48:57.97 ID:U0IfpguFd.net]
- malloc(負の数)も
- 406 名前:デフォルトの名無しさん mailto:sage [2021/01/01(金) 15:48:48.11 ID:1v7huw3N0.net]
- 負数は単に符号なしで評価してとんでもなくでかい領域を要求してるだけ?
- 407 名前:デフォルトの名無しさん mailto:sage [2021/01/01(金) 21:47:45.23 ID:DIBn3EXs0.net]
- だね
- 408 名前:デフォルトの名無しさん mailto:sage [2021/01/01(金) 22:22:16.08 ID:wEvOepYPd.net]
- sizeof(struct)*numとかごちゃごちゃ書くうちにうっかり0や負数になって…
というのはよくあった
- 409 名前:デフォルトの名無しさん [2021/01/02(土) 11:42:56.15 ID:QsP+Nlmq0.net]
- forループでunsignedで<0やって終わらないバグとかもあるな
- 410 名前:デフォルトの名無しさん mailto:sage [2021/01/03(日) 00:53:19.09 ID:ERUOHNUN0.net]
- >>406
それは正しい挙動じゃないかな。 強いて言えば、おせっかいでwarning出せばいい程度かと。
- 411 名前:デフォルトの名無しさん mailto:sage [2021/01/03(日) 11:06:33.61 ID:QdF5iATA0.net]
- >>407
正しい挙動 ≠ 想定した動作
- 412 名前:デフォルトの名無しさん mailto:sage [2021/01/03(日) 11:12:17.27 ID:3NmY3eCcd.net]
- この条件は必ずTRUEになりまっせー
というwarningはあったと思う
- 413 名前:デフォルトの名無しさん [2021/01/03(日) 11:41:35.97 ID:TDgWBZToF.net]
- <0は終わらないじゃなくて始まらないの間違いだった
- 414 名前:デフォルトの名無しさん mailto:sage [2021/01/03(日) 13:51:43.57 ID:3NmY3eCcd.net]
- unsigned int a;
for( a = 11; a > 0; a -= 2 ) ... こんな感じのを作ってしまったことはあったな… aは1のあと65535になるので永久に終わらず aは0になる可能性もあるので条件式ではwarningも出ず
- 415 名前:デフォルトの名無しさん mailto:sage [2021/01/03(日) 14:28:17.87 ID:izXBuwpQd.net]
- >>407
#defineの値によって警告でちゃうから おせっかいイラネ
- 416 名前:ビル・ジョブズ [2021/01/04(月) 00:09:11.84 ID:V9PboY9+0.net]
- mallocとか常に成功を返すんじゃない?
問題はそのアドレスに何か操作をした時。 MMUありの前提だけど。
- 417 名前:デフォルトの名無しさん mailto:sage [2021/01/04(月) 00:29:40.79 ID:NWAwlt7F0.net]
- 実行してみないと使えるか分からないとなると
医療関係では使用禁止になるな
- 418 名前:デフォルトの名無しさん mailto:sage [2021/01/04(月) 01:03:06.31 ID:PMQqdXD/0.net]
- validation 通らないだろうねぇ
- 419 名前:デフォルトの名無しさん mailto:sage [2021/01/04(月) 07:24:09.81 ID:Nz2iXOdN0.net]
- >>413
メモリーオーバーコミットの話をしたいんだろうけどLinuxとかでも設定によるし>>414の言うように医療やECU等のようにそんなもんが許されない組込系の機器もあるから環境によるとしか言えんわな
- 420 名前:デフォルトの名無しさん [2021/01/05(火) 12:05:40.60 ID:G8BimKKu0.net]
- 宇宙関係も無理やろね
- 421 名前:デフォルトの名無しさん mailto:sage [2021/01/05(火) 12:12:18.79 ID:8w5sr2J0d.net]
- 失敗が絶対に許されないならmallocとか使うな
スタティックで確保しろ
- 422 名前:デフォルトの名無しさん mailto:sage [2021/01/05(火) 13:27:41.97 ID:zIEcR2TW0.net]
- 一つのファイルポインタで読み書きする場合、読みと書きを切り替えるときに
fseek(fp,0,SEEK_CUR)等を挟むことはANSI Cにも書いてるわけですが、 挟まなくていい環境(Linuxとか)もありその実装上の違いってどうなってるんでしょうか? バッファゼロにしてもfseekが必要なので、バッファリングってわけでもなさそうです。
- 423 名前:デフォルトの名無しさん [2021/01/05(火) 13:36:43.08 ID:sz7Oy+6E0.net]
- https://github.com/gcc-mirror/gcc
ここからwindowsのfseekとlinuxのfseekを見つけ出す
- 424 名前:はちみつ餃子 mailto:sage [2021/01/05(火) 14:23:40.55 ID:N7gEH2Zs0.net]
- C の規格では OS とかの支援のない 「フリースタンディング」な環境にも言及していて、
フリースタンディング処理系は標準ヘッダ float.h iso646.h limits.h stdarg.h stdbool.h stddef.h stdint.h の内容に限定した機能が用意されてればよいことになってる。 malloc は stdlib.h だから無くても規格合致フリースタンディング処理系と名乗れる。
- 425 名前:デフォルトの名無しさん mailto:sage [2021/01/05(火) 16:33:30.17 ID:9HicEvTUd.net]
- >>413
あり得ない malloc()で==NULLテストして「メモリーが足りません終了します」とかする事はできるが 確保した変数に読み書きした瞬間のエラーは感知する方法がないので そこでエラーにされてもコアダンプして終了するしかない ユーザー側から見たら未完成プログラムである
- 426 名前:デフォルトの名無しさん mailto:sage [2021/01/05(火) 16:45:24.18 ID:7nbNqUCud.net]
- ユーザーからしたら
エラーメッセージを出そうが突然死だろうが メモリが足りなくなる事自体不完全プログラムだ エアバッグが作動するときに、 [メモリ不足で動作できませんでした] なんて表示されても何の意味もない
- 427 名前:はちみつ餃子 mailto:sage [2021/01/05(火) 16:47:22.16 ID:N7gEH2Zs0.net]
- >>422
やっとる (環境も多い) やろがい。
- 428 名前:デフォルトの名無しさん mailto:sage [2021/01/05(火) 17:03:07.78 ID:9HicEvTUd.net]
- >>423
それなら「エアバッグの数が多すぎるんだな」とか推論できるが なんのメッセージもなく作動しなかったらユーザーはスピードメーター、ショックセンサー、安全装置などあらゆる関連部分を点検しなければならない
- 429 名前:デフォルトの名無しさん mailto:sage [2021/01/05(火) 18:07:14.87 ID:dzUtU5Ds0.net]
- そんな事はユーザーからすればどうでもいい
不完全な事にはかわりない
- 430 名前:デフォルトの名無しさん mailto:sage [2021/01/05(火) 18:09:46.84 ID:9HicEvTUd.net]
- ソフト作ったことない人だねw
メッセージの有無はバグが起きたときの対処に大きな違いがある
- 431 名前:デフォルトの名無しさん mailto:sage [2021/01/05(火) 18:13:12.71 ID:dzUtU5Ds0.net]
- メッセージの有無なんかよりも
動作するかどうか の方がはるかに重要 メモリ確保が失敗する可能性があるところで 失敗が許されない動作に対してmallocを使うのが間違い
- 432 名前:デフォルトの名無しさん mailto:sage [2021/01/05(火) 18:15:35.99 ID:dzUtU5Ds0.net]
- 適切なエラー処理をすればそれで十分
ソフト設計者のしたっぱの発想
- 433 名前:デフォルトの名無しさん [2021/01/05(火) 18:35:11.65 ID:zMZuOoIk0.net]
- >>423
読む人がいないならメッセージも無意味.
- 434 名前:デフォルトの名無しさん mailto:sage [2021/01/05(火) 18:47:10.76 ID:oFYQTpSv0.net]
- 確保できないと返ってくれば対処方法はあるだろう
OK返されたあと、実際に使おうとしたら実はってなると その分リカバリーが複雑になる
- 435 名前:デフォルトの名無しさん mailto:sage [2021/01/05(火) 19:00:03.87 ID:K71kt7oj0.net]
- ここの人はOOM Killerも知らんのか?
確保したプロセスが死ぬとは限らんのだが… https://reboooot.net/post/kernel-params-related-to-oom-killer/
- 436 名前:デフォルトの名無しさん mailto:sage [2021/01/05(火) 19:39:22.64 ID:eT+iPfAP0.net]
- 確保しようとしてエラーになったなら対処のしようもあるが、空手形乱発していざとなったら
関係ないプロセスが殺されるってのも困ったもんだよな。 初期のOSXはOOM Killerのような仕組みもなくてシステム全体が固まってたな。
- 437 名前:デフォルトの名無しさん mailto:sage [2021/01/05(火) 19:58:11.78 ID:dzUtU5Ds0.net]
- >>431
1秒後に再度確保? バカ丸出し
- 438 名前:デフォルトの名無しさん mailto:sage [2021/01/05(火) 20:01:22.72 ID:8cFKE+AV0.net]
- お行儀よく死ぬ機構があるかどうか
- 439 名前:デフォルトの名無しさん mailto:sage [2021/01/05(火) 21:50:05.77 ID:9HicEvTUd.net]
- >>428
話が変わってるぞw 論理的に思考できない根本的にプログラマー向きじゃない人だな >>429 どんな適切なエラー処理をすればいいのか ご教示願いたいw
- 440 名前:デフォルトの名無しさん mailto:sage [2021/01/05(火) 22:27:33.74 ID:K71kt7oj0.net]
- >>436
> どんな適切なエラー処理をすればいいのか ケースバイケース 前提示さずにこんな質問する奴はプログラマーに向いてない
- 441 名前:デフォルトの名無しさん mailto:sage [2021/01/05(火) 23:58:57.29 ID:zD1ciQHW0.net]
- OOM Killer は、Kubernetes のリソース制限の基本。
Linux のnamespace, cgroup 例外は、 アプリ例外は業務上のエラーだから、アプリで処理すべき。 システム障害などは、アプリで処理できる例外ではない
- 442 名前:デフォルトの名無しさん mailto:sage [2021/01/06(水) 00:01:25.01 ID:WT+BV7/+0.net]
- その分類上、メモリ確保失敗はアプリで処理すべきなのかどうかわかんなくない?
- 443 名前:デフォルトの名無しさん mailto:sage [2021/01/06(水) 00:46:50.28 ID:g4fxgipO0.net]
- mallocに失敗したらローカルで確保してみる
それが駄目なら一時ファイル作ってそこに格納する 他にも手はありそうだ
- 444 名前:デフォルトの名無しさん mailto:sage [2021/01/06(水) 01:23:26.66 ID:8o6ePSWp0.net]
- >>440
ねーよ間抜け
- 445 名前:デフォルトの名無しさん mailto:sage [2021/01/06(水) 03:55:31.45 ID:Sqdcyjlhd.net]
- >>437
ケースバイケース言いたいだけだったのかw >>428 new使うだけでmallocされるのにそんな化石みたいなこと言われても
- 446 名前:デフォルトの名無しさん mailto:sage [2021/01/06(水) 05:25:17.33 ID:kVhO/tYW0.net]
- >>440
> mallocに失敗したらローカルで確保してみる ローカルが何を意味してるのかわからんがローカル変数のことならはじめからローカル変数で確保しておくべき
- 447 名前:デフォルトの名無しさん mailto:sage [2021/01/06(水) 05:28:43.74 ID:kVhO/tYW0.net]
- >>442
> ケースバイケース言いたいだけだったのかw 言いたいだけって言うかそれ以外に言いようがないだろw マジで言ってるならプログラマー失格レベル
- 448 名前:デフォルトの名無しさん [2021/01/06(水) 07:24:13.29 ID:bGGeDo6wM.net]
- アプリケーション開発しかやったことないのでシビアな状況のプログラムってのがよくわかってないけど
通常のプログラムだったらNULLが帰ってきたら終了だろうね 失敗が許されない環境で、もしメモリを使い果たして確保できないような状況の場合は失敗が許されないのにメモリを使い果たすようなプログラム自身を改善した方が良いような ファイルから必要なデータだけを読み込むようにして使い終わったメモリは開放するとか メモリを使い果たして無いのに失敗する可能性とかだったら、標準関数の正常な役割が信用できないという事になるのでプログラム言語自体使えなくなるよね C/C++だけじゃなくて それならアセンブラで直接書くしか無くなるのでは この場合だったら「たらーれば」の言いがかりにしか聞こえないけど
- 449 名前:はちみつ餃子 mailto:sage [2021/01/06(水) 09:52:33.41 ID:NVCaEro60.net]
- そこんところはホスト環境・開発システムがどこまで保証するかという話になるので、
各環境で十分な保証があるなら使えばいいし、保証がないなら使えないというだけのことでは。 私も実態を知ってるわけじゃないが組み込み開発だったら 実際には保証というか自分たちで検証することも多いと思うが。
- 450 名前:デフォルトの名無しさん mailto:sage [2021/01/06(水) 15:10:46.82 ID:6EEBy3Y5d.net]
- Linux系にはヒープの上限を設定できないの?
よくある入門書にはnewで敵キャラでもエフェクトでも作って動かしましょうみたいなのがよくあるが それやって消すのを忘れると一日動かしてるとかなりの容量になり突然システムが止まる 懐かしいシングルタスクOSの時代と変わらんw Win16や32だとローカルヒープは上限があって一杯になってもアプリが止まるだけでシステムは続行できた
- 451 名前:デフォルトの名無しさん mailto:sage [2021/01/06(水) 15:49:09.66 ID:kVhO/tYW0.net]
- >>447
> Win16や32だとローカルヒープは上限があって一杯になってもアプリが止まるだけでシステムは続行できた それはプロセス単位の制限だろ、man ulimit でググってこい OOM Killerとかはシステム全体の話な
- 452 名前:デフォルトの名無しさん mailto:sage [2021/01/06(水) 16:05:04.01 ID:QohpZ5Jnd.net]
- >>446
Cスレだから組み込み系が話題の中心だと思ってたが PCのアプリをCで書くなんて人がいまだにいるの?
- 453 名前:はちみつ餃子 mailto:sage [2021/01/06(水) 17:27:30.00 ID:NVCaEro60.net]
- >>449
ロジック部分を C で書くことはもうあまりないかもしれんが、 低レイヤや速度チューニングがなくなるわけではないからなぁ。 コードの総量に C が占める割合は少ないにしても C が (一部には) 使われているものはまだまだあるんじゃね?
- 454 名前:デフォルトの名無しさん mailto:sage [2021/01/06(水) 17:33:29.06 ID:QohpZ5Jnd.net]
- アプリの速度チューンならC++で良いと思うんだが
なぜC?
- 455 名前:デフォルトの名無しさん mailto:sage [2021/01/06(水) 18:33:49.31 ID:m3At07SYM.net]
- >>447
ulimit -d でできるぽいね
- 456 名前:デフォルトの名無しさん mailto:sage [2021/01/06(水) 18:53:37.18 ID:kVhO/tYW0.net]
- >>449
LinuxのカーネルとかApacheとか未だにC言語は残ってるよ 新規は少なくなっていくだろうけどCOBOLと同様にメンテでは当面使い続けられると思うぞ
- 457 名前:デフォルトの名無しさん mailto:sage [2021/01/06(水) 19:00:16.49 ID:A7AJXFBH0.net]
- カーネルがmallocで失敗???
システムごと死ぬだろ
- 458 名前:デフォルトの名無しさん mailto:sage [2021/01/06(水) 20:05:41.96 ID:6EEBy3Y5d.net]
- >>448
だからアホなアプリ一個でシステムが止まるなんて前世紀の話か?と聞いてるんだよね それともここはシステム関連の話だけか? mallocの仕組みもしらずにシステムいじろうなんて命知らずの人だねw >>452 シェルコマンドじゃなくて このアプリちょっと試してみてよ、と他人に渡した時に行儀よくできるような言語自体のオプションはないものかな mallopt()が近いみたいだけど英語ドキュメントしかないや
- 459 名前:デフォルトの名無しさん mailto:sage [2021/01/06(水) 20:50:30.31 ID:kVhO/tYW0.net]
- >>455
> だからアホなアプリ一個でシステムが止まるなんて前世紀の話か?と聞いてるんだよね だから OOM Killer でググってこいよ システムを止めるかどうかは設定によるし、Windows でもメモリー逼迫したら不安定になるから > シェルコマンドじゃなくて https://linuxjm.osdn.jp/html/LDP_man-pages/man2/setrlimit.2.html そもそもシェルから設定できるのにプログラムから設定できないわけ無いだろ プログラマーの素養なさ過ぎ
- 460 名前:デフォルトの名無しさん mailto:sage [2021/01/06(水) 20:52:54.12 ID:3ZsNazx6d.net]
- C言語なんだから無条件でPC前提にするのやめようぜ
- 461 名前:デフォルトの名無しさん mailto:sage [2021/01/06(水) 20:58:31.92 ID:3ZsNazx6d.net]
- Windowsでも
プロセスとスレッドのプライオリティを上げて メモリを大量に使えば スワップしまくって激重になって 事実上システムが死ぬけどね
|

|