河野真治 @ 琉球大学情報工学です。

In article <bb7mc9$80$1@bgsv5648.tk.mesh.ad.jp>, cltack@xug.biglobe.ne.jp writes
> 逆アセンブルした結果から推測すると、宣言した変数が全てスタック上
> でやりとりされ、bogus_funcにポインタを渡すと、スタック
> へのポインタが渡され、メモリの実体を指してないようです。

ま、逆アセンブルの結果を見ればわかると思いますが...

>         int bogus_func(int* bar)
>         {

この段階でbarがスタックセグメントを指しているってことがコン
パイラに伝わらないとデータセグメントが使われてしまいますよね。
教える方法があるかどうかは知りません。

>         {
>                 int foo;
>                 bogus_func(&foo);

こっちで「エラー」を出すのが正しいとは思うけど、

でも、ポインタをデータとスタックで、やりとりするつもりなら、
スタックセグメントとデータセグメントをわけるのは、止めた方が
良いと思うよ。(ま、言うことを聞くような奴ならそんなことは
しないわけだが... せいぜい苦労してください... 8086 なら
ともかく...)

---
Shinji KONO @ Information Engineering, University of the Ryukyus, 
              PRESTO, Japan Science and Technology Corporation
河野真治 @ 琉球大学工学部情報工学科, 
           科学技術振興事業団さきがけ研究21(機能と構成)