タグ

関連タグで絞り込む (1)

タグの絞り込みを解除

cとselfに関するa2ikmのブックマーク (1)

  • 【追記】C と Go で for 文のループでのスタックフレームの積み方が違うという気付き → 変数の確保の方法が違うだけだった

    この記事を読んでいて、不思議に感じたのでメモ。 blog.p1ass.com というのも、 低レイヤを知りたい人のためのCコンパイラ作成入門 を読みながら for 文を作っていたときにループごとにスタックフレームを新しく積むことはなかったので、別の変数に再代入しただけで結果が変わることに違和感を覚えた。もしかして C と Go で扱いが違うのかもと思って、ループ変数とループ内で宣言した変数のアドレスを書き出してみた。 C の場合はループ変数もループ内で宣言した変数もアドレスは毎回一致していた。ということは、毎回同じスタック領域をスタックフレームを使っていることになる。( for の初期化文などと同じフレームかまではわからないけど、 for 文のあとで i を参照することができないことを考えると、 for 文に入ったところで新しく積んでいるのかもしれない) $ cat <<"EOF" >ma

    【追記】C と Go で for 文のループでのスタックフレームの積み方が違うという気付き → 変数の確保の方法が違うだけだった
    a2ikm
    a2ikm 2020/06/13
    CもGoもわからないので、とりあえず実験してメモった。//さらに調べて追記した
  • 1