トップページ⇒tech
1002コメント346KB

C言語なら俺に聞け 139 [無断転載禁止]©5ch.io

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん 転載ダメ©2ch.net (ワッチョイ 0b7b-+OgX)2017/02/22(水) 18:55:55.41ID:xeEkzIw00
C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
http://codepad.org/

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

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

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

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

前
http://echo.2ch.net/test/read.cgi/tech/1481372036/
http://www.geocities.jp/c_cpp_cs/about_c/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
0153デフォルトの名無しさん (ワッチョイ ab7b-8nUV)2017/03/08(水) 15:57:06.21ID:tKO0gCMl0
>>150
30点 的外れな戯言並べても採点は変わらない
ジジイは無理すんな w
0154 ◆QZaw55cn4c (ワッチョイ ab85-GPt5)2017/03/08(水) 18:00:32.85ID:/EX97NIO0
>>151
そうだよね
C99 は全般的にいって今更感がぬぐえない

>>152
わかるが、サイズが1変わるかどうかなんて、どうでもいい問題に思っていた
0155デフォルトの名無しさん (ワッチョイ 9fe1-LFAQ)2017/03/08(水) 18:38:53.79ID:ERQkfdVq0
C99は今更なんじゃなくて、やっと現実に近づいたというところでしょ
コンパイラ拡張に依存したり、わかりにくいマクロが減らせる
0156デフォルトの名無しさん (ワッチョイ ab85-GPt5)2017/03/08(水) 18:45:04.00ID:/EX97NIO0
>>155
いやね、C89 で十分という気がして仕方がない
仮に C89 処理系を作っていたとして、それを C99 に適合させる気力が湧くか、考えてみるけれどもたぶんやる気がでないだろう
あの alloca() の改変である実行時領域確保配列なんかは筋悪にしかみえない、たしか C11 とか C++ ではオプションになったとか、それもよくわかる
0157デフォルトの名無しさん (ワッチョイ 6b3c-BJNc)2017/03/08(水) 18:57:25.94ID:YeRun3zZ0
>>154
たかが1要素 されど1要素

その要素が 1バイトかもしれないし 1ページかもしれないw
0158デフォルトの名無しさん (ドコグロ MM2f-Y1yA)2017/03/08(水) 19:53:45.80ID:N8HM6lINM
>>154
> わかるが、サイズが1変わるかどうかなんて、どうでもいい問題に思っていた
こういう奴は信用できない
0159デフォルトの名無しさん (ワッチョイ 5b4e-xEld)2017/03/08(水) 20:38:19.19ID:59T19xUI0
VLAって筋悪か?
0160デフォルトの名無しさん (ワッチョイ bb4e-CqFM)2017/03/08(水) 20:58:52.57ID:muMKoRUn0
>>159
正直使いどころがわからん。
0161デフォルトの名無しさん (ワッチョイ 0ba1-c3r2)2017/03/08(水) 21:05:16.11ID:nYBrtmF60
組込分野はC89に対応してるならまだマシな部類じゃね
そうじゃないなら単にやる気の問題だろうけど
0162デフォルトの名無しさん (ワッチョイ ab7b-8nUV)2017/03/08(水) 21:12:01.33ID:tKO0gCMl0
>>160
ループの中で繰り返し毎に異なるサイズ確保する場合に重宝する
allocaの改変とか言ってるついてこれないジジイは無視しておけ
0163デフォルトの名無しさん (ワッチョイ 0f24-T7IB)2017/03/08(水) 21:56:56.05ID:DNe+Lf9O0
>>152
で? a[1]で書けてたときに問題になってたか?
0164デフォルトの名無しさん (ワッチョイ ab7b-8nUV)2017/03/08(水) 22:09:34.99ID:tKO0gCMl0
>>163
a[1]では問題があった、flexible array memberで無くなった
0165デフォルトの名無しさん (フリッテル MM7f-8aD0)2017/03/08(水) 22:45:59.22ID:sHqr9nhTM
最低でもC99は必須
俺的には少なくともstdint.hは必須
0166デフォルトの名無しさん (ワッチョイ 3b51-BJNc)2017/03/08(水) 23:12:32.85ID:oksZ54sT0
まぁ標準化されたのはいいけど、みんなそれ以前から自前で用意してたよね。
0167デフォルトの名無しさん (ワッチョイ 0ba1-c3r2)2017/03/08(水) 23:15:10.17ID:nYBrtmF60
まあ移植性は重要だよな
0168デフォルトの名無しさん (アウアウカー Sa6f-k9EO)2017/03/08(水) 23:19:37.95ID:kUhBpeLWa
>>166
してるけど、64bit環境とか考慮できてない腐ったコードもあるからな

flexible array memberなんかも末尾配列の要素数に0とか1指定でそれっぽいことはできていたけど、未定義を踏まざるを得なかった
それが規格に則って書けるようになるってのは良いことだと思うけどな
0169デフォルトの名無しさん (ワッチョイ 3b51-BJNc)2017/03/08(水) 23:25:57.49ID:oksZ54sT0
規格として移植性が良くなるのは正解なんだけど、使う側からすると、新しい規格が
十分に普及するまでは逆に移植性が悪くなるというジレンマ。
0170デフォルトの名無しさん (ワッチョイ eb6f-KW4d)2017/03/08(水) 23:27:52.41ID:jyzNIqf90
C89で基本は完成されたね。
どうしてもC99でないと困るってことはないけど
//コメントとかinttypes.hはよく使うから、あれば便利
0171デフォルトの名無しさん (ワッチョイ bb4e-CqFM)2017/03/08(水) 23:29:36.18ID:muMKoRUn0
>>162
その意味がわからないんだけど…
最大値を気にせず確保することなんてありえるの?
0172デフォルトの名無しさん (ワッチョイ 134e-ATAZ)2017/03/09(木) 01:29:12.80ID:3g6CLylS0
実行時に配列のサイズが決まるわけよ。
例えば引数によってとか。
0173デフォルトの名無しさん (ワッチョイ fb4e-HNYZ)2017/03/09(木) 02:11:21.55ID:Kb3gKMEf0
いや、だから、最大値を決めておかないのか?って事を突っ込んでいるのだが…
しかも外部入力でリミット切らないとか、セキュリティホールの典型じゃね?
で、最大値決めるって事は、可変にする必要がないって事だと思うんだが…
0174デフォルトの名無しさん (ワッチョイ 134e-ATAZ)2017/03/09(木) 06:20:42.92ID:3g6CLylS0
つうかVLAって要素数に変数を使えることが大きいんじゃないかな
int size = a / b;
int array[size] = {0}; 
sizeは実行時に決まるが問題の無い範囲であるのが保証できる場合、
計算結果であるsizeを再利用できるのでパフォーマンスがいい
0175デフォルトの名無しさん (ドコグロ MM92-ezmg)2017/03/09(木) 06:38:53.59ID:K/l9Si6sM
>>173
常に最大値で配列切っとけってこと?
いやそうしたけりゃお前はそうすればいいと思うよ
0176 ◆QZaw55cn4c (ワッチョイ be13-H6F/)2017/03/09(木) 07:10:53.29ID:hGM1T24/0
>>175
VLA はセキュリティの穴になりうるね,実行時の値で配列の上限が決まるなんて危険な発想ではないかい?
そんなものを標準に入れていいのか?

>>174
配列の要素数がパフォーマンスに関係することなんかないんでないかい?
0177デフォルトの名無しさん (ドコグロ MM92-ezmg)2017/03/09(木) 07:44:22.47ID:K/l9Si6sM
>>176
(バカが使えば)
> VLA はセキュリティの穴になりうる

VLA に限った話じゃないけどね
0178デフォルトの名無しさん (ブーイモ MM92-busz)2017/03/09(木) 08:08:41.65ID:dsGfio+6M
VLAそのものがセキュリティホールになる理由がわからん
外部入力でサイズが決まるとしても起こりうるのは
スタックオーバーフローくらいのもんだろ
そんなのは再帰が深くなりすぎても起こる
たとえmallocに変えたところで問題がスタックからヒープに移るだけ
0179デフォルトの名無しさん (ワッチョイ 0719-9O7/)2017/03/09(木) 08:08:57.49ID:F9CUJ5lt0
if(size <100){
int array[size] = {0};
}
解決策考えたよ
0180デフォルトの名無しさん (ワッチョイ bf7b-WeoV)2017/03/09(木) 08:29:50.20ID:QUckDsXy0
>>173
何言ってんだバカ
VLAのサイズと最大値は全く独立だ

お前の心配するセキュリティホールの実例出してみろよ
笑ってやるから
0181デフォルトの名無しさん (ワッチョイ fb4e-HNYZ)2017/03/09(木) 08:59:36.08ID:Kb3gKMEf0
>>180
google で
「スタックオーバーフロー セキュリティ」
を検索して最初に表示されるページを読んでから反応しなよ…
0182デフォルトの名無しさん (ワッチョイ 0719-9O7/)2017/03/09(木) 09:08:20.35ID:F9CUJ5lt0
>>181
そのサイト凄いな、時間計って読んでみたらちょうど5分で読み終わった。
0183デフォルトの名無しさん (ワッチョイ bf7b-WeoV)2017/03/09(木) 09:14:10.67ID:QUckDsXy0
>>181
とっとと、実例を出せよ
笑ってやるから

スタックオーバーフローのメカニズムわかってないだろ w
0184デフォルトの名無しさん (ワッチョイ 364f-aizu)2017/03/09(木) 09:31:48.50ID:iRW4jXC40
外部から悪意あるコードを突っ込んでそのコードにジャンプさせうることが
VLAの機構の中にリスクが内在してて可能になっちゃうということ?
0185デフォルトの名無しさん (ワッチョイ 0719-9O7/)2017/03/09(木) 09:50:34.19ID:F9CUJ5lt0
int array[size] ; で。
sizeをリターンアドレスの一個前にもってくるようにして
次に都合よくgetsが出てくるから、そこでジャンプ後のアドレス+
悪意あるコードを入力すると関数から戻ったとき悪意あるコードが
実行されるってことを言いたいんだろ
0186デフォルトの名無しさん (ワッチョイ bf7b-WeoV)2017/03/09(木) 10:00:19.43ID:QUckDsXy0
>>176
>VLA はセキュリティの穴になりうるね,実行時の値で配列の上限が決まるなんて危険な発想ではないかい?
>そんなものを標準に入れていいのか?
snprintf不要と言ってるジジイの発言らしくないな
0187デフォルトの名無しさん (ワッチョイ e6c9-2hGO)2017/03/09(木) 11:39:27.23ID:LxMtt/hf0
ラン・オーバー・ラン
0188デフォルトの名無しさん (ワッチョイ 364f-aizu)2017/03/09(木) 11:46:44.45ID:iRW4jXC40
Run "CINDY" Run
0189 ◆QZaw55cn4c (ワッチョイ bf85-BkNt)2017/03/09(木) 12:19:27.12ID:9nAslxZ/0
C99にわかはこれだから困る

>>180
>VLAのサイズと最大値は全く独立だ

では聞くが、VLA はどこに確保されるの?スタックなの?ヒープなの?
0190デフォルトの名無しさん (ワッチョイ 134e-ATAZ)2017/03/09(木) 14:10:16.74ID:3g6CLylS0
>>176
パフォーマンスに影響する(場合がある)のは、要素数じゃなく式の値(a / b)の再利用
0191デフォルトの名無しさん (ワッチョイ 134e-ATAZ)2017/03/09(木) 14:17:05.30ID:3g6CLylS0
まあ最大値で確保すれば解決する、というかVLA未サポートならそうするわけだけど、
VLAが使えるなら使っちゃうなあ
0192デフォルトの名無しさん (ワッチョイ bf7b-WeoV)2017/03/09(木) 15:18:40.35ID:QUckDsXy0
>>189
ついてこれないジジイは無理すんな
スタック領域を1000000以上拡張出来ないと仮定して

int a[1000000];

int l = 1000000;
...
int a[l];

どちらも拡張失敗するのは実行時
VLAだから失敗するわけじゃない

snprintfに関しての言い訳はしないのか?
0193 ◆QZaw55cn4c (ワッチョイ bf85-BkNt)2017/03/09(木) 18:29:43.99ID:9nAslxZ/0
>>192
質問を繰り返そう
VLA はどこに確保されるの?スタックなの?ヒープなの?はっきりさせてよ

>snprintf
安全だからありがたく使わせていただきますけれども、C99 の目玉ってわけでもないかと
0194 ◆QZaw55cn4c (ワッチョイ bf85-BkNt)2017/03/09(木) 18:33:38.26ID:9nAslxZ/0
>>191
そうなんだ…
新しいものを避けるのは、私ももう老人ってことかもね
alloca() をバンバン使ってる口だから(alloca() は実装されてない系もある)、そこんところの実装がはっきりしてるんだったら使ってもいいかな
0195 ◆QZaw55cn4c (ワッチョイ bf85-BkNt)2017/03/09(木) 18:44:49.43ID:9nAslxZ/0
>>168
なるほどね、規格になった、てことで意味があるんだね
flexible array member も VLA も昔からある作法だし、C89 で十分だ、って頑なに思っていたけれども考え直してもいいかもね
0196デフォルトの名無しさん (ドコグロ MM27-ezmg)2017/03/09(木) 18:47:48.68ID:LA1Z4pgPM
>>191
最大値の大きさによるけどでかいなら俺はヒープにとる
0197デフォルトの名無しさん (ワッチョイ bf7b-WeoV)2017/03/09(木) 18:57:57.10ID:QUckDsXy0
>>193
>>192で回答済みだが、ジジイは分からないようだから答えてやろう
固定長アレイが確保されるのと同じ領域
大部分の実装ではスタック

で、それが何か?
0198デフォルトの名無しさん (JP 0H1f-busz)2017/03/09(木) 18:58:32.59ID:9TBsKkVvH
>>193
どこに確保されるかわかると嬉しいことでもあるの?
実際、どこに確保されるかは決まっていない
0199デフォルトの名無しさん (ワッチョイ bf7b-WeoV)2017/03/09(木) 18:59:10.03ID:QUckDsXy0
>>195
>flexible array member も VLA も昔からある作法だし、
ねーよ、ジジイ
0200デフォルトの名無しさん (ブーイモ MM2b-9hUc)2017/03/09(木) 19:17:51.15ID:fyCowO4bM
C99は便利機能が云々ってよりは
クリーンなコードの為のガイドラインに近い気がする
0201デフォルトの名無しさん (ワッチョイ bf85-BkNt)2017/03/09(木) 19:30:40.14ID:9nAslxZ/0
>>198
そうだね、強いて述べると安心感だね
alloca() とからくりが同じなら、よくわかるし、なによりも今までずっと使ってきたから安心だ、そこんところは規格に書いてないの?

>>198
VLA の確保領域がスタックなら、十中八九それは alloca() と同じだろうね
いいたいことは、C99 の大部分が、C89 ですでにやってきたことだ、ということだよ

>>86 で
>ついてこれないジジイが使わないのは勝手だが
とあるが、
実のところ、諸々のことは昔からやってきたことで、C89 を味わっているクラスとしては、C99 は今更感が強いんだよ
いや、今更感というのもしっくりこないな、なんというか、字面だけで見栄えがいいというだけで規格している、というか、
スタックかヒープかをはっきりさせないところというか

少なくとも、C++11 の右辺値参照ほどのインパクトは、ない

>>199
それは無知というほかはない
0202デフォルトの名無しさん (ワッチョイ bf7b-WeoV)2017/03/09(木) 19:54:01.97ID:QUckDsXy0
>>201
>それは無知というほかはない
まさかc faq 2.6がflexible array memberだと言う主張が?
これまでの戯言読む限りはそうっぽいが w
0203 ◆QZaw55cn4c (ワッチョイ bf85-BkNt)2017/03/09(木) 19:56:31.69ID:9nAslxZ/0
>>202
そのとおりだよ

そうじゃないというのなら、
お前のいうところの flexible array member を使ったコードを書いてみてくれないかな?
お前のいうところの flexible array member の必要性を明示するコードを頼む
0204デフォルトの名無しさん (ドコグロ MM27-ezmg)2017/03/09(木) 20:02:02.08ID:LA1Z4pgPM
あの〜、セキュリティ云々の話は知ったかしちゃいました
って言うことでいいのかな?
0205デフォルトの名無しさん (ワッチョイ 0719-9O7/)2017/03/09(木) 20:13:40.89ID:F9CUJ5lt0
自分の書いたコードがいつか世界中に出回ってインジェクションアタックの標的にされるかもしれない
そんなふうに考えていた時期が俺にもありました
0206デフォルトの名無しさん (ワッチョイ bf7b-WeoV)2017/03/09(木) 20:18:03.80ID:QUckDsXy0
>>203
ジジイのくせに基本的なこと知らねーのな

c faq 2.6はstruct hackと呼ばれる【技法】
初めは長さ1のアレイで実装されてた
gccだかどっかが長さ0のアレイを許して大きさの計算を楽にした
でも、規格に完全に適合して無かった
大きな長さのアレイで実装する事が提案されたが、とてもダサかった
struct hackを規格に適合して実装するためのC99の【言語機能】がflexible array memberだ
0207デフォルトの名無しさん (ワッチョイ bf7b-WeoV)2017/03/09(木) 20:21:37.39ID:QUckDsXy0
>>201
>実のところ、諸々のことは昔からやってきたことで、C89 を味わっているクラスとしては、C99 は今更感が強いんだよ
>いや、今更感というのもしっくりこないな、なんというか、字面だけで見栄えがいいというだけで規格している、というか、
>スタックかヒープかをはっきりさせないところというか

長くやってても、何も理解していないと言う悪い見本
0208デフォルトの名無しさん (ブーイモ MM2b-busz)2017/03/09(木) 20:39:48.15ID:eJ64f19XM
C99の規格にスタックとかヒープとかいう概念はなかったはず
0209 ◆QZaw55cn4c (ワッチョイ be13-H6F/)2017/03/09(木) 21:02:30.09ID:hGM1T24/0
>>206
つまり C FAQ 2.6 が発展解消 flexible array member につながるんだね
結局,昔からやってきたことだね,VLA も同じだね

>>208
まあ,そうだが
0210 ◆QZaw55cn4c (ワッチョイ be13-H6F/)2017/03/09(木) 21:07:29.41ID:hGM1T24/0
>>204
あはは,alloca() と同じだったんなら,まあ VLA でもいっか‥と転向しました,てへぺろ
0211デフォルトの名無しさん (ワッチョイ bf7b-WeoV)2017/03/09(木) 21:15:22.33ID:QUckDsXy0
>>209
【技法】と【言語機能】の区別つけような ジジイ
0212デフォルトの名無しさん (ワッチョイ bf7b-WeoV)2017/03/09(木) 21:17:42.13ID:QUckDsXy0
>>210
あー、つまりVLAがどこに確保されるか知らないで
筋悪っ とか言ってたって事ね 死ねジジイ
0213デフォルトの名無しさん (ブーイモ MM2b-busz)2017/03/10(金) 00:57:30.56ID:+YP/FacCM
で、セキュリティホールの話は?
0214デフォルトの名無しさん (ワッチョイ bf7b-WeoV)2017/03/10(金) 01:08:50.79ID:1BLND3090
181 デフォルトの名無しさん (ワッチョイ fb4e-HNYZ)[] 2017/03/09(木) 08:59:36.08 ID:Kb3gKMEf0

>>180
google で
「スタックオーバーフロー セキュリティ」
を検索して最初に表示されるページを読んでから反応しなよ…
0215デフォルトの名無しさん (ブーイモ MM2b-busz)2017/03/10(金) 01:22:38.60ID:+YP/FacCM
>>214
環境によって順位が変わりうるので具体的なURLよろ
0216デフォルトの名無しさん (ワッチョイ 3672-1om1)2017/03/10(金) 02:56:17.07ID:7J5p523R0
valgrindでexpとかtanがエラー出るのなんでだろう
0217 ◆QZaw55cn4c (ワッチョイ be13-H6F/)2017/03/10(金) 07:35:26.46ID:Jt0Ka4fq0
>>212
alloca() をずっと使ってきたといったろう?VLA もおそらくそんなところだろうと想像してはいたね,
ただ筋悪だと思うことは今でも変わらないよ,配列は普通に固定長で書いたほうがいい,という主観だからね
ただここで意見をいただいて(お前からもいただいた,と思っているよ)スタンスの一部が変わったかもしれない

>>211
>>206 までさも大事なことのように出し惜しみしていた内容だが
実は >>168 ですでに述べられていることだったね
0218デフォルトの名無しさん (ドコグロ MMca-ezmg)2017/03/10(金) 08:06:05.30ID:V/tY9QS2M
>>217
お前がやることは

知ったかしてよく知らないのに >>173 のレスをしてしまいました
ごめんなさい

だろ
0219デフォルトの名無しさん (アウアウカー Sa7f-K8Mp)2017/03/10(金) 08:33:50.79ID:9tLH1/xpa
技術的な議論で人格攻撃するのはやめなよ
0220デフォルトの名無しさん (ワッチョイ bf7b-WeoV)2017/03/10(金) 08:43:28.66ID:1BLND3090
おい、ID:Kb3gKMEf0出て来いよ
0221デフォルトの名無しさん (ワッチョイ 364f-aizu)2017/03/10(金) 08:59:33.13ID:USScrCM40
VLAだからこそ、それがセキュリティーホールになるに至ってない
スタックオーバーフローは起こせるけど
そこからどうやってセキュリティーホールたる
悪意のあるコードの注入と実行に至るのか知りたい

確保サイズを超えての書き込み(オーバーラン)は
セキュリティーホールに成り得るけど、それはVLAだろうが固定だろうが同じだし
0222デフォルトの名無しさん (ドコグロ MM83-pmxy)2017/03/10(金) 09:12:05.47ID:OTPF9/DXM
>>220
次に出てくる確率はどのくらいだろうね?
0223デフォルトの名無しさん (ワッチョイ bf7b-NGN/)2017/03/10(金) 09:15:12.97ID:1BLND3090
>>217
VLAがどこに確保されるか確認したくて粘着してたと言い訳するのか?
じゃ、答え合わせが終わったところで、

> VLAのサイズと最大値は全く独立だ
につけてきた言いがかりは撤回するって事だな。
0224デフォルトの名無しさん (ワッチョイ bf7b-NGN/)2017/03/10(金) 09:54:31.76ID:1BLND3090
ID:Kb3gKMEf0は逃亡しちゃったようだからもう一匹の当事者
セキュリティの穴を説明しろ

>>176 : ◆QZaw55cn4c (ワッチョイ be13-H6F/)2017/03/09(木) 07:10:53.29 ID:hGM1T24/0
> >>175
> VLA はセキュリティの穴になりうるね,実行時の値で配列の上限が決まるなんて危険な発想ではないかい?
> そんなものを標準に入れていいのか?
0225デフォルトの名無しさん (ワッチョイ 0719-9O7/)2017/03/10(金) 10:02:29.68ID:YR4SAqR10
セキュリティーの穴とはセキュリティーホールの事です
セキュリティーホールとは安全のホールの事です
安全のホールとは安全の穴の事です。
安全の穴とは自分で調べろカスということです。
0226デフォルトの名無しさん (エーイモ SEb2-j8zu)2017/03/10(金) 11:15:35.92ID:+H2nFcdAE
苦cで学んでるけどc難しい
0227デフォルトの名無しさん (アウアウウー Sa93-gCpv)2017/03/10(金) 12:34:51.49ID:6UnBWLdUa
苦Cくらいの基礎的な部分は他の高級言語と比べるとわかりやすいと思うけどね
そいつらよか機械寄りの言語だからブラックボックスが少ないし
ただ暗記より理解が大事にはなる
人間の視点を捨てて機械の気持ちになるんだ
0228デフォルトの名無しさん (ドコグロ MM83-UZLy)2017/03/10(金) 12:46:04.08ID:b/HgXddWM
俺は人間をやめるぞ!
0229デフォルトの名無しさん (ワッチョイ 0719-9O7/)2017/03/10(金) 13:47:06.37ID:YR4SAqR10
妖怪人間になるのか?
0230デフォルトの名無しさん (ワッチョイ af7b-aox5)2017/03/10(金) 13:56:43.32ID:LsCbePTG0
メーテル・・・
0231デフォルトの名無しさん (ワッチョイ bf85-aizu)2017/03/10(金) 18:35:04.54ID:JlJm70jl0
>>223
「VLA って alloca() のことじゃない、類似品なら C89 のときからあるよね」
「flexible array member って C FAQ に書いてあるじゃない、類似品なら C89 のときからあるよね」

「C99 についてこれないと老人よばわりするけど、実は昔からあるよね」
0232デフォルトの名無しさん (ワッチョイ bf85-BkNt)2017/03/10(金) 18:40:21.38ID:JlJm70jl0
>>218
>>173 は別人だよ

でもね、スタックに配列を置くんだったら基本固定長だね、まあ alloca() を使ってみたりするくらいだから自分も首尾一貫はしていないのは認めるけどね

>>173 の指摘はするどいね
>外部入力でリミット切らないとか、
自分もこわくてできないね
0233デフォルトの名無しさん (ワッチョイ bf7b-NGN/)2017/03/10(金) 19:05:25.98ID:1BLND3090
>>231
>>217
VLAがどこに確保されるか確認したくて粘着してたと言い訳するのか?
じゃ、答え合わせが終わったところで、

> VLAのサイズと最大値は全く独立だ
につけてきた言いがかりは撤回するって事だな。
0234デフォルトの名無しさん (ワッチョイ 0719-9O7/)2017/03/10(金) 19:06:34.39ID:YR4SAqR10
俺はリミット切らないぜ〜ワイルドだろ〜
0235デフォルトの名無しさん (ワッチョイ bf7b-NGN/)2017/03/10(金) 19:10:43.67ID:1BLND3090
>>232
allocaは平気で使ってるようだけど、なんでVLAは
> >外部入力でリミット切らないとか、
> 自分もこわくてできないね
これなんだ? 謎
0236デフォルトの名無しさん (ドコグロ MMca-ezmg)2017/03/10(金) 19:32:49.66ID:V/tY9QS2M
>>232
別人ならすまん

> >>173 の指摘はするどいね
> >外部入力でリミット切らないとか、
> 自分もこわくてできないね
これはセキュリティホールの話かね?
そうだと言うならどこがどう危険なのか詳しく説明して欲しいんだが
0237デフォルトの名無しさん (ワッチョイ bf85-BkNt)2017/03/10(金) 19:33:05.83ID:JlJm70jl0
>>235
首尾一貫していないのは認めるよ、でもスタックに何でも乗せまくるのは怖いね
データをスタックに置き、スタックからヒープに移す一連の作業では、データ用の配列は固定長にするね、そこらへんは慎重にやってるよ
alloca のいいところは使い捨てができるところだね

いいたいことは >>231
0238デフォルトの名無しさん (ワッチョイ bf85-BkNt)2017/03/10(金) 19:37:50.00ID:JlJm70jl0
>>236
セキュリティホールも視野にいれているが、直接は関係ないかもしれないね
セキュリティホールは、書いている時点では予想もつかないところがあるから(ミスは事前にはわからない)
自分の能力を考えて、スタックには固定長をあてるようにしているよ
固定長の定数を最低限に振って(N=2 くらい)、それでも正常に動くことを確認したりしてから N=1024 とか 4096 とか適当にわりふっているよ

自分の能力を過信しないことだよ
だから VLA は使わない
0239デフォルトの名無しさん (ドコグロ MMca-ezmg)2017/03/10(金) 19:59:52.49ID:V/tY9QS2M
>>238
もう言ってることがむちゃくちゃだな...

> セキュリティホールも視野にいれているが、直接は関係ないかもしれないね
結局関係あるかどうかも知らないのに
> >>173 の指摘はするどいね
とか言ってたのかよ

> セキュリティホールは、書いている時点では予想もつかないところがあるから(ミスは事前にはわからない)
今の話に関係ないよな

> 自分の能力を考えて、スタックには固定長をあてるようにしているよ
お前の能力なんてどうでもいいし、プログラムの作り方もどうでもいい(部下がやってたら張り倒すけど)

> 自分の能力を過信しないことだよ
鏡を見た方がいいぞ

> だから VLA は使わない
これもどうでもいい結論だな
0240デフォルトの名無しさん (JP 0H1f-busz)2017/03/10(金) 20:00:22.53ID:cy2JzExTH
allocaは使うのに?
0241デフォルトの名無しさん (フリッテル MM0e-X9Oq)2017/03/10(金) 20:06:19.22ID:Y9Psq7+lM
1関数でスタッフを使っていいのはせいぜいキロバイトオーダーまで
メガバイト以上はヒープ推薦
0242デフォルトの名無しさん (ワッチョイ 0719-9O7/)2017/03/10(金) 20:06:51.85ID:YR4SAqR10
VLAは政府の陰謀だから使っては駄目だ
0243デフォルトの名無しさん (ワッチョイ f217-csvI)2017/03/10(金) 20:44:24.96ID:n8W4k0Sb0
Windowsのカーネルモードは12KBのスタックサイズ制限があるので、ひとつの関数で数KBスタックを使うのはかなり贅沢。
0244 ◆QZaw55cn4c (ワッチョイ be13-H6F/)2017/03/10(金) 20:45:49.50ID:Jt0Ka4fq0
>>240
まあ,そうだね
0245デフォルトの名無しさん (ワッチョイ bf7b-NGN/)2017/03/10(金) 21:57:09.32ID:1BLND3090
>>238
非標準ライブラリのallocaは使うのにVLAを使わない理由はなんだ
逃げてないで答えろよ
0246デフォルトの名無しさん (ワッチョイ bf7b-NGN/)2017/03/10(金) 21:59:24.00ID:1BLND3090
>>238
非標準ライブラリのallocaはセキュリティ上問題ない(だから使う)として
一方でVLAはセキュリティ上問題あるとしている根拠を述べよ
0247デフォルトの名無しさん (ワッチョイ 723c-T4+7)2017/03/11(土) 00:59:17.54ID:99Bu6VN70
VLAって本当になんであるんだろうな。
ソフトウェアの脆弱性を誘発するためにNSAやアメリカ政府が無理やりぶち込んだ仕様としか思えない。
0248デフォルトの名無しさん (ブーイモ MM92-busz)2017/03/11(土) 01:24:57.09ID:37V8Z39XM
>>247
どんな脆弱性?
0249デフォルトの名無しさん (ワッチョイ cfd4-nt29)2017/03/11(土) 01:44:41.71ID:o4rVijF20
>>241
スタックサイズ拡張したらダメなの?
0250デフォルトの名無しさん (ドコグロ MMca-ezmg)2017/03/11(土) 05:56:56.37ID:0cGmXZ4gM
>>247
> NSAやアメリカ政府が無理やりぶち込んだ仕様としか思えない。
基地害の妄想
0251デフォルトの名無しさん (ドコグロ MMca-ezmg)2017/03/11(土) 05:58:26.88ID:0cGmXZ4gM
>>249
>>243 みたいに拡張できないケースは少なくない
0252デフォルトの名無しさん (ワッチョイ f338-9O7/)2017/03/11(土) 08:06:11.09ID:zScGv76W0
https://www.youtube.com/watch?v=56-ktABNiR4
C言語マスターの生放送開始 お前らに指南してやんよ
■ このスレッドは過去ログ倉庫に格納されています