はりぼて日記
2007 | 01 | 02 | 03 | 04 | 05 | 07 | 08 | 10
2006 | 11 | 12
10月 12 (金曜日) 2007
21:23
28日目
 
28日目〜

P594
なになに? alloca?
んーーーっと・・・・
1000までは  char flag[MAX], s[8] では、
charだから1バイト。それが配列として宣言されるから1000バイト。
1000バイトは1KB弱かぁ。だからOKと。
で、これが10000になっちゃうとええと・・・9.7KB。たしかに4KBを超えてるなぁ。

ちなみにちょっと実験。ほんとに4KBが境目かどうかやってみました。
えっと、4KBってことは1024*4だから、4096bだよね。MAXを4095にして実行!

うほぉ! とまったぞ??? おっかしいなぁ・・・

3500はOK・・・
3900もOK・・・
4000だとおかしくなるけど、なんかちょっと違うぞ??
3950はOK・・・
3960もOK・・・
3970もOK・・・
3980もOK・・・
3990からおかしいな。
3985もダメ。
3984・・・おぉぉ! OKじゃん!!

ふーむ・・・つーことは、3984が実質限界ということかぁ・・・
配列は0からスタートするから個数としては3985。3985バイト・・・

これはなんの数値だろう??
あ” そうか! 同じく配列タイプがもう一個あるな。[8]だから
9個。足し算すると3994。3994バイト・・・。
スタックの限界値は4KBすなわち4096バイト。102バイト足りないけど、これはなにに使われてるんだろう???

まあいいや。とにかく、ほぼ4KBを境におかしくなるのは間違いないようだなぁ・・・

で!! 

とにかくCコンパイラがこの仕様というわけか。(ここまでは理解)
ほんでもって、_allocaがなくてもいいようにmallocでメモリを確保しておいて、それをflagに当て込むと・・・。これも理解。
(つか、おもしろいね。このテクニック・・・(^^  )

で、_allocaを搭載すると。


ところで、スタックに領域を確保するのにESPの引き算って、これ、意味解る?
スタックは積まれていくことを思い出すと理解できるよね?(^^



P601
さていよいよファイルAPIだ!!

おぉぉっと! 予想に反してなんかこれ簡単だぞ!??


P609
コマンドラインの取得ね。・・・うーん。そんなに言うほどややこしくないと思うぞ?
 
30日を過ぎたBlogにはコメントできません。

Referer  (7)
(1) 2 3 4 5 6 7 8 9 10 » 

PopnupBlog V3 Denali created by Bluemoon inc.