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


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

【初心者歓迎】C/C++室 Ver.102【環境依存OK】



1 名前:デフォルトの名無しさん [2017/11/04(土) 16:33:35.07 ID:NYxCuvMY.net]
エスケープシーケンスやWin32APIなどの環境依存なものもOK
そのような質問は必ず環境を書きましょう
半角空白やタブでのインデントはスレに貼ると無くなります

コードを貼れる所
codepad.org/
https://ideone.com/

前スレ
【初心者歓迎】C/C++室 Ver.101【環境依存OK】
https://mevius.5ch.net/test/read.cgi/tech/1500329247/

304 名前:片山博文MZ mailto:sage [2018/03/17(土) 17:07:21.02 ID:6umCop+M.net]
>>297
見た目とコンパイル速度のどちらを優先するかによる。

305 名前:デフォルトの名無しさん mailto:sage [2018/03/17(土) 17:32:05.08 ID:Ak7laUjo.net]
タブコードはエディタの設定に見た目が左右されるので使わない方がいい

306 名前:デフォルトの名無しさん mailto:sage [2018/03/17(土) 17:39:18.45 ID:B2oEmArJ.net]
うーん、やっぱりタブは使うべきではないんですね

307 名前:デフォルトの名無しさん mailto:sage [2018/03/17(土) 17:41:47.51 ID:Ak7laUjo.net]
昔は1バイト当たり単価が高かったからね

308 名前:デフォルトの名無しさん mailto:sage [2018/03/17(土) 20:01:33.65 ID:hl7Y0kGo.net]
エディタの機能向上による要素が大きいな。
インデントやその削除にキーを何度も叩かなきゃならない状態だったらTABがまだ主流だったろう。

309 名前:デフォルトの名無しさん mailto:sage [2018/03/17(土) 22:45:16.37 ID:NcDC59dQ.net]
>>294
初めて知ったw

310 名前:はちみつ餃子 mailto:sage [2018/03/18(日) 04:35:20.62 ID:7ElIFee1.net]
>>294
他にも変な仕組みは色々とあるけど、これはひとつとして使いどころが思いつかんよな。

311 名前:デフォルトの名無しさん mailto:sage [2018/03/18(日) 06:08:40.04 ID:QnqZv5w6.net]
int a[10]; で a[5] でも 5[a] でも同じようにアクセスできるのは、
a[5] と *(a + 5) が同等で + 演算子の交換可能性から *(5 + a) も可、
それなら 5[a] も同じじゃなきゃ片手落ちだよね、って発想というか、
過去のコンパイラの実装とも関係がありそうな気がする。

もちろん、古いCコンパイラとのソース互換性が問題になるほど
みんなが使ってた書き方とは思わないけど。

312 名前: mailto:sage [2018/03/18(日) 11:53:22.56 ID:ojW1vPJY.net]
>>304
IOCCC …



313 名前:デフォルトの名無しさん mailto:sage [2018/03/20(火) 16:56:43.36 ID:PiAC+2Zr.net]
i++ と ++iって最適化すればほとんど変わらないか、あるいは++iの方がちょっと速いくらいですよね?
なんでi++の方がデファクトスタンダードみたいになってるんでしょう?
ほぼ無視できる程度のメリットしかないとしても、++iと書くデメリットがないと思うのですが

314 名前:はちみつ餃子 mailto:sage [2018/03/20(火) 18:20:40.65 ID:N1yoGURK.net]
>>307
インクリメントの対象が整数しかなかった C からの習慣がなんとなく引き継がれてるだけ。
後インクリメントは気持ち悪いと考える人は少なくはないし、
値を使わないなら前インクリメントにするのは C++ では良い習慣だよ。

315 名前:デフォルトの名無しさん mailto:sage [2018/03/20(火) 20:17:17.59 ID:UFFOOrdu.net]
++C言語

316 名前:デフォルトの名無しさん mailto:sage [2018/03/20(火) 20:18:05.88 ID:O958tZqO.net]
>>308
なるほど、最初はちゃんと意味があったんですね
納得できました
ありがとうございます

317 名前:デフォルトの名無しさん mailto:sage [2018/03/20(火) 22:04:48.60 ID:+J5xJfYE.net]
Cでインクリメントやデクリメントに後置が使われがちな理由は
a = *p++; みたいなポインタの使い方で手が慣れたせいもあるかと思う。

C++では性能的な理由で前置が好まれたのは指摘のとおり。

個人的には、どっちでも構わない場面ではCでは後置、C++では前置で書くかな。
特に単純なforで++iと打つと、途端にC++で書いてる気がしてくる。

318 名前:デフォルトの名無しさん mailto:sage [2018/03/20(火) 22:08:04.94 ID:I2zEd3jr.net]
本当に性能に差が出たの?測ったの?

319 名前:デフォルトの名無しさん mailto:sage [2018/03/20(火) 23:46:13.85 ID:ZVuOcNlA.net]
GCC 6.4.0 最適化なしで計測してみたけど、平均的な差は無いな

320 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 00:00:26.00 ID:2Gb2uvWn.net]
単純なforなら同じコード吐くんじゃね?

321 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 00:36:19.45 ID:OwhHF7Zm.net]
単純な整数型のインクリメントなら前置も後置もさが無いだろうけど、C++ではユーザー定義のクラスでインクリメントを実装できるから、
基本的には更新前のオブジェクトの状態の退避などの処理が必要な後置インクリメントよりコストの少ない前置インクリメントが好まれるのだと思うよ。

322 名前:はちみつ餃子 mailto:sage [2018/03/21(水) 01:30:43.51 ID:MouF+uE4.net]
結果が使われないことが明らかな場合には後インクリメントのかわりに前インクリメントを呼び出すとかいったことをしても
ほとんどのコードは壊れないと思うんだけど、そういうルールを言語仕様に追加するのはもう出来ないかなぁ?



323 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 01:40:04.19 ID:CmybL5Dk.net]
まぁ、出来るなら既にやってるでしょ
ぶっちゃけ、よっぽどシビアに速度を求める訳でないなら前置後置の差なんて気にする必要無いんじゃないかなぁ

324 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 19:45:28.97 ID:2N3cG+sW.net]
そもそも速度を気にして
記述を変えるって
間違ってる気がする・・

325 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 19:50:40.96 ID:eUhtaSa6.net]
時代は変わったか
昔はそんな事は当たり前だった

326 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 19:51:54.96 ID:eUhtaSa6.net]
機能に対して糞重いソフトが多いのも
ソフトに対する価値観が変わったからか

327 名前:はちみつ餃子 mailto:sage [2018/03/21(水) 19:55:34.20 ID:MouF+uE4.net]
>>318
速度を気にするというのもあるけど、意味的にも無意味な処理をするってのがダサいだろ?

328 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 20:23:31.47 ID:NRxI71LE.net]
>>321
お前のコードは無駄ばかり
コンパイラも無駄命令を吐く
そもそもCPUの動作自体が無駄ばかり
そのプログラムを作るのも無駄だったり

お前の存在は?

329 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 20:37:50.64 ID:L8aCdycT.net]
本スレでやれ

330 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 20:54:50.63 ID:b8e3mX8M.net]
手間が変わらず、かつデメリットもないのにその選択肢を取らない理由がなくない?
後置の方が保守性が高いとか可読性が高いならともかく、そうじゃないんだから天秤にかける必要さえない

331 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 20:59:28.52 ID:CmybL5Dk.net]
>>321
それで見やすくなるなら別にいんじゃね

332 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 22:35:08.33 ID:TV3lE0eZ.net]
効率を言い出すと値を返さないインクリメント、デクリメントが標準で欲しくなる



333 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 22:37:05.71 ID:D2465Z9C.net]
どんなメリットがあるので?

334 名前:はちみつ餃子 mailto:sage [2018/03/21(水) 22:39:19.66 ID:MouF+uE4.net]
ホントは最適化でだいぶん上手いことやってくれるんやけどな。
というか最適化でやるべきことだと思う。
細かいことまでいちいち配慮しなきゃならないのは最適化技術の敗北。
仕様に [[likely]] なんて入ったのは不格好な話だ。

335 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 23:03:06.41 ID:TV3lE0eZ.net]
イテレータの++や―に戻り値があること自体設計ミス
ポインタのと類似性そこまで要らんし
イテレータで *it++ とか書きたくて仕方ない人もそんなに居ないだろ
void型でよかった

336 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 23:08:57.12 ID:52xrh1Hk.net]
アセンブラの inc やdec 命令実行時のフラグ反映は不要?
高級アセンブラの名残じゃね?

337 名前:はちみつ餃子 mailto:sage [2018/03/21(水) 23:14:08.41 ID:MouF+uE4.net]
>>329
逆じゃないかなぁ。
ポインタをイテレータとしても使えるように一貫性を持たせたら結果的にそうなったって感じじゃないの。
どちらにしても、そこで無理に一貫性を持たせようとしてしまったことが良くなかったとは思うけど。
ちなみに operator++ の返却値を void にすることは出来ます。

338 名前: mailto:sage [2018/03/22(木) 00:37:09.57 ID:2FEQ/Wa3.net]
>>330
inc/dec でフラグが変化しないアーキがあった、というか、それが普通だと思っていたんだが

339 名前:デフォルトの名無しさん mailto:sage [2018/03/22(木) 00:58:21.46 ID:dLiR/Xt3.net]
なぜポストインクリメントがよく使われるかは、
PDP-11とかのアドレッシングモードにあるオートインクリメントが起源。
間接参照したあとにレジスタが増える。
オートデクリメントは逆にプレデクリメント。

あとinc,decでフラグが変化するのもPDP当時は当然の動作。

340 名前:デフォルトの名無しさん [2018/03/22(木) 06:11:13.57 ID:I/iO4/8S.net]
Linuxさあ、Ubuntuとか使ってるんだけど、俺はプログラムやネット以外にあまり
PCつかわないから、Ubuntuなんてプログラム環境は大体パッケージで手に入るし
スゲエ良いと思ってたんだけど、エロ動画配信サイトが今時は必ず専用の○○プレーヤーじゃないと
見れないんだな。たとえば、DMMプレーヤーとかそのサイトの専用の奴。なんでもDRMとかいう不正禁止のが
付いてて、普通のプレーヤーじゃ見れないのよ。スゲエ不便だからそれ専用にWindows10準備しちゃおうかな・・w

俺はプログラム言語でC++が一番すきです。 

341 名前:デフォルトの名無しさん mailto:sage [2018/03/22(木) 07:05:57.55 ID:C5Ula1AM.net]
またイミフなレスしてるのか

342 名前:デフォルトの名無しさん [2018/03/22(木) 07:15:53.52 ID:tiDItZ1f.net]
C--があってもいいかもしれないな。



343 名前:デフォルトの名無しさん [2018/03/22(木) 09:44:57.12 ID:Q2/ylW7b.net]
C♭思い出した

344 名前:はちみつ餃子 mailto:sage [2018/03/22(木) 10:24:04.20 ID:HExEyyqO.net]
>>336
ググればすぐにわかることだけど、有るよ。

345 名前:デフォルトの名無しさん mailto:sage [2018/03/22(木) 17:42:41.78 ID:Z5xjYgF/.net]
unordered_setやunordered_mapは
reserve(size_type)はあるのにshrink_to_fit()がないのはなぜですか?

346 名前:デフォルトの名無しさん [2018/03/22(木) 18:14:23.23 ID:tiDItZ1f.net]
ハッシュだからじゃないの。

347 名前:デフォルトの名無しさん [2018/03/26(月) 20:46:12.70 ID:qgnj+CJa.net]
void DumpCode(const char* str) {
for (int i = 0; str[i] != '\0'; ++i) {
printf("%02X ", (unsigned char)str[i]);
}
cout << endl;
}

↑の文字コードを16進数で表示する関数ですが、なぜ

printf("%02X ", str[i]);

ではなく、

printf("%02X ", (unsigned char)str[i]);

とキャストしているのでしょうか?

348 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 20:52:31.38 ID:Sl5sXtlN.net]
0x80以上の時符号拡張されてマイナスになるから

349 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 20:55:55.86 ID:qgnj+CJa.net]
char型の値は 0 から 127 までであると本に書いてあるのですが。。。

350 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 20:58:30.32 ID:Sl5sXtlN.net]
>>343
その本は窓から投げ捨てろ。
ー128〜127が正解だ

351 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 21:01:09.95 ID:qgnj+CJa.net]
>>344

本にはそうは書かれていませんでした。申し訳ありません。間違っていました。

アスキー文字コードは、0から127までの値しか取らないからOKかなと思ってしまったのですが。

352 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 21:02:33.45 ID:qgnj+CJa.net]
>>344

何か不具合が起こる例を教えていただけると助かります。



353 名前:片山博文MZ mailto:sage [2018/03/26(月) 21:06:19.73 ID:42MV7MT1.net]
>>346
char ch = 255;
printf("%d\n", ch);

C/C++では、オーバーフローは警告なく普通に起こる。

354 名前:片山博文MZ mailto:sage [2018/03/26(月) 21:10:11.27 ID:42MV7MT1.net]
signedな整数型は、最上位ビットが符号フラグになるんだ。charは8ビットの整数型で、printfに渡す過程で、符号付きのint型になる。まあ、やってみたらわかるけど、
printf("%c\n", (char)255);

355 名前:片山博文MZ mailto:sage [2018/03/26(月) 21:11:26.75 ID:42MV7MT1.net]
printf("%d\n", (char)255);
%dね。

356 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 21:42:10.96 ID:3IjTFjn0.net]
>>344
>>348
そんな事は決まってない

357 名前:片山博文MZ mailto:sage [2018/03/26(月) 21:52:30.42 ID:42MV7MT1.net]
charのビット数、CHAR_BITが8ではない環境はほとんど

358 名前:ネい。 []
[ここ壊れてます]

359 名前:片山博文MZ mailto:sage [2018/03/26(月) 22:00:14.93 ID:42MV7MT1.net]
4ビットCPUで動作するトースターのコンピューターの話でもするつもりかね。

360 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 22:58:41.82 ID:3IjTFjn0.net]
ほとんど無いから何?
「決まってない」の反論になってないよ

現行品でcharが16bitの環境があるんだけどね

361 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 23:00:24.31 ID:3IjTFjn0.net]
charが符号付きとも決まってない
ちょうど今符号無しの環境を使ってるよ

362 名前:片山博文MZ mailto:sage [2018/03/26(月) 23:02:53.12 ID:8aZ5PUAj.net]
インテル入ってない



363 名前:デフォルトの名無しさん [2018/03/26(月) 23:03:06.95 .net]
俺のcharは100bitあるぜ!!

364 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 23:04:42.66 ID:3IjTFjn0.net]
とりあえず>>1を読んどけ

365 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 23:55:34.36 ID:2w8Ha0HC.net]
char と signed char を混同するクソコテ

366 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 01:28:23.66 ID:bCiMyjcv.net]
今後char関連の質問をするときは、charのビット数や符号などの環境を明示しましょうということで。

初心者お断り感あるけど、重箱の隅を全力でほじくり返す人がいるからしょうがないね。

367 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 01:33:34.51 ID:GW1/xmrB.net]
unsigned char がデフォなんてMS-C 3.x or 4.xの /J オプション付き
以外に遭遇した事無いけどな

368 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 02:55:06.24 ID:oddUVIdN.net]
>>359
>>341の質問に対してcharの符号有無が環境によって異なるというのは本質的な回答であり、ビット数の話は不適切だったというだけで、重箱の隅がどうこうという話では無いだろう。
そもそも初心者歓迎のスレで初心者を除外する要件を設けるのは本末転倒では?

369 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 07:09:18.07 ID:vavxlF2f.net]
???
環境を明示しろって言うのは>>1にも書いてあるんだが...

370 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 07:42:58.98 ID:7BdcIkqa.net]
>>361
初心者だろうと質問に付随する前提知識は必要
変数知らんデータ型知らん制御文も分からないじゃ説明しようがない事なんていくらでもある

まずそこら辺の知識を理解してもらわん事には説明できないですってのは初心者を除外とは言わんだろう

371 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 07:52:49.58 ID:ofLFYE4b.net]
回答者もわかってないからな
>>352とか

372 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 08:13:51.03 ID:ofLFYE4b.net]
4ビットCPUだとcharは4ビットと思ってんのか?



373 名前:デフォルトの名無しさん [2018/03/27(火) 08:39:25.07 ID:tnecWY6M.net]
>>341 >>346
不都合と言う程の不都合か分からないけど、
単なる char が signed char のコンパイラで、例えば str[i] == -1 の時、
printf("%02X ", (unsigned char)str[i]); なら表示は "FF "
printf("%02X ", str[i]); だと表示は "FFFFFFFF " (intが32bitの環境)
てな具合に表示結果が指定桁数とずれて見苦しい、という現象が起きる。

ただし void DumpCode(const char* str) でASCII文字列しか扱わないなら、
意図せずASCII以外(漢字など)を含んだ文字列を引数に与えたときに
「見苦しい表示結果」のおかげで関数の使い方の間違いに気付きやすい。
よって (unsigined char) のキャストをしない方が好ましい、て考え方もある。


>>360
ARM で GCC だと、単なる char は unsigined が普通みたい。
元のCPU設計で符号付8bitが拡張機能だったことと関係あるとかないとか。

374 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 08:41:45.88 ID:7BdcIkqa.net]
4bitのcharか、アルファベットが表現できないな

まぁ、341の例だと渡されるポインタ配列が文字コードの範囲内ならキャストは要らんね
なんかの理由で文字コード外の数値が入ってきた時に文字揃えがズレる事を嫌って一応キャストしたって感じだとは思うけど

375 名前:デフォルトの名無しさん [2018/03/27(火) 09:55:59.95 ID:dDmfqIPV.net]
int *p = new int[100];
delete[] p;

delete[] p で int 100個分の領域を解放するのだと思いますが、
どうやって、 p が int 100個分の領域を指していると分かるのでしょうか?
p は単なる int 型へのポインタです。

376 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 10:02:58.95 ID:GW1/xmrB.net]
>>366
つ -fsigned-char/-funsigned-char

377 名前:デフォルトの名無しさん [2018/03/27(火) 10:03:09.61 ID:dDmfqIPV.net]
スタックオーバーフローが起こった時に、すぐにエラーが起こらない可能性がある
そうですが、なぜ、エラー終了にしないのでしょうか?

378 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 10:56:59.81 ID:r9AxIBc/.net]
>>368
良くある実装としては
newが返すアドレスの前にヘッダ情報がある

379 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 10:59:24.01 ID:r9AxIBc/.net]
>>370
(すぐに)わからないから

380 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 13:22:10.84 ID:KACb5w79.net]
素人考えだと並のOS環境ではスタックオーバーフローは自動伸長に失敗してアドレスを割り当てられない時に起こると思うから直ぐにエラー終了しそう
バッファオーバーフローの場合は割り当てたメモリとバッファ境界がミスマッチなら直ぐにエラー検出できないとしても仕方がないけどこれは質問とは別の話

381 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 14:41:48.71 ID:1PffFgMm.net]
配列への添え字アクセスの計算量はO(1)の定数時間とのことですが、これは通常の変数へのアクセスと同じということでしょうか?
例えばint型配列のfooとint型変数のbarがあったとして、
int n = foo[10000]; と
int n = bar;
の速度は同じですか?

382 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 14:55:45.68 ID:Z/OsE5Ku.net]
添字の値にかかわらず一定
foo[10000] と foo[1] が同じって話だぞ



383 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 14:59:13.83 ID:1PffFgMm.net]
>>375
ありがとうございます
だとすると、同じ添え字に何度もアクセス(読み取りのみ)する場合、一旦変数に待避させてその変数を参照した方がいいですかね?

384 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 15:02:49.07 ID:jMKP3TFv.net]
レッツ実測&吐き出したコードを確認
最適化具合でも全然ちがう

385 名前:デフォルトの名無しさん [2018/03/27(火) 15:06:05.02 ID:dDmfqIPV.net]
>>377

吐き出したコードってどうやって確認するんですか?

386 名前:デフォルトの名無しさん [2018/03/27(火) 15:06:56.79 ID:dDmfqIPV.net]
>>371-372

ありがとうございました。
そのあたりのことを詳しく書いてある本はありますか?

387 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 15:07:03.67 ID:1PffFgMm.net]
>>377
確かにそうですね
ありがとうございます、やってみます

388 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 15:08:28.42 ID:Di3KX/fh.net]
ポインタから値を読み込む場合は?

389 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 15:16:11.82 ID:jMKP3TFv.net]
>>378
使っている環境による
機械語一歩前のアセンブラも出力するオプションで出てきたアセンブラとデータシートから推定する

もっと前のアルゴリズムの検討は済んでて、
もはや、枝葉を削ってでも速度を出さなきゃいけないという最終段階の話だよね?

390 名前:はちみつ餃子 mailto:sage [2018/03/27(火) 17:26:05.07 ID:6NyejsSC.net]
>>343-344

char 型が符号付きであってもなくても格納可能な範囲という意味では 0 〜 127 であると思って使ってれば間違いないのは確か。
あと、厳密にはマイナスの表現に 1 の補数を使ってる環境は有りうるので
char が符号付きだとしても -127 〜 127 しか表現できないかもしれない。

>>345

言語仕様では文字がアスキーコードとは保証してないんだ。
ほとんどの環境ではアスキーコードかそれと互換な文字コードだろうけど、
EBCDIC とかでも言語仕様には違反しない。

391 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 18:20:11.37 ID:ofLFYE4b.net]
>>373
並のOS環境って何だよwww

一般的なMCUのほとんどは
アドレス変換テーブルの仕組みがなく
スタックオーバーフローを検出するハード的仕組みも無い

392 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 18:21:21.80 ID:ofLFYE4b.net]
>>383
無知は出てくるな



393 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 20:25:43.43 ID:GW1/xmrB.net]
BASIC Stamp でもやってればいいのに

394 名前:デフォルトの名無しさん [2018/03/27(火) 22:12:36.71 ID:gjFRbLOq.net]


395 名前:つスレッドがある
片方はstd::queueにつんで、もう片方はそれを取る

これで詰まれた瞬間に取るにはどうするのがいいのかな?
簡単に作るなら、無限ループでスリープ挟みながら取り続けることだけど、無駄も多いから積んだのをトリガーに取りたい


環境はg++とVC++です
[]
[ここ壊れてます]

396 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 23:17:24.98 ID:7OwU1Hvz.net]
>>379
stackoverflow で、たまたまアクセスしたメモリに、
どんな値が入っているかは、誰にも分からない。
単に前に入っていた値が、入っているだけだから

その値が、たまたまCPU 命令にあれば、CPU を実行するから、
エラーになるのは次の命令以降になる

一方、CPU命令に無ければ、不正な命令となり、即座にエラーとなる

397 名前:デフォルトの名無しさん [2018/03/27(火) 23:21:17.42 ID:dDmfqIPV.net]
スタックのメモリ領域がこの範囲からこの範囲というように管理はしていないのですか?

398 名前:デフォルトの名無しさん [2018/03/27(火) 23:30:03.49 ID:4E83+S2j.net]
>>387
昔汎用メッセージポンプを検討したときのサーベイにstd::condition_variableと書いてある。
注意としてspurious wakeupというのも書いてある。
もうすっかり忘れてしまって何のことだか自分でも思い出せないのだが、「条件変数」というのがキーワードになるようだ。

399 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 23:38:12.48 ID:zFrY2ZyB.net]
>>389
してる環境もあれはしてない環境もある

400 名前:はちみつ餃子 mailto:sage [2018/03/27(火) 23:46:19.51 ID:6NyejsSC.net]
>>389
ページ単位ではしていることがある。
OS がメモリの割付を管理していて、
足りなければ追加で割り当てたりもする。
割り付けてないメモリ空間に変に触ったら検出できる。

401 名前:デフォルトの名無しさん mailto:sage [2018/03/28(水) 06:54:26.81 ID:fYzIlbdt.net]
>>389
スタックエリアの管理は当然してる
オーバーランの監視は環境次第

ハード的に仕組みがあるものもあし
ソフトで(コストをかけて)やる場合もあるし
全くしない環境もある

402 名前:デフォルトの名無しさん mailto:sage [2018/03/28(水) 06:56:20.68 ID:fYzIlbdt.net]
今のWindowsとかLinuxとかならもちろん瞬時にわかる



403 名前:デフォルトの名無しさん mailto:sage [2018/03/28(水) 10:17:21.31 ID:qnpV2Jxp.net]
>>387
セマフォの類を使え

404 名前:デフォルトの名無しさん [2018/03/30(金) 10:25:28.98 ID:8epIcCej.net]
最近のC++ってかなり進化していてTaskとかLinqなんかもできるんだろ? PCだとC#があるから
C++は使わないが組み込みだとC++を使いたい。CからC++に変えてみようとおもっってテスト
してみたことがあるが、メモリーを食い過ぎてStringはつかえなかった。
どこまでなら使えるんだろ? なにか目安はないか?






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

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

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