Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Goのとある未定義動作 市川悠人/izzii @ Techtouch golang.tokyo #33
Slide 2
Slide 2 text
30秒自己紹介 名前:市川悠人/izzii 所属:テックタッチ株式会社 経歴:AI!SRE!セキュリティ! 趣味:登山、ボルダリング X: ahneahneahne
Slide 3
Slide 3 text
早速ですがクイズです。 true or false? true or false?
Slide 4
Slide 4 text
早速ですがクイズです。
Slide 5
Slide 5 text
早速ですがクイズです。 printf で結果が変わるとか 懐かしいですね。(C/C++)
Slide 6
Slide 6 text
コンパイラの判断 上がアドレス参照しない ver 下がアドレス参照する ver a と b がヒープにエスケープ
Slide 7
Slide 7 text
答え合わせ 「アドレス値を必要としない場合」、スタック上の別々のアドレス に変数が入ったまま 「アドレス値を必要とする場合」、ヒープにエスケープされるが zero-size な変数は結果として同一アドレス っぽい
Slide 8
Slide 8 text
思わず Go Forum に投げ込んでみました
Slide 9
Slide 9 text
Go コミュニティあったけぇ〜
Slide 10
Slide 10 text
答え合わせ ”Pointers to distinct zero-size variables may or may not be equal. Two distinct zero-size variables may have the same address in memory.” https://go.dev/ref/spec#Comparison_operators 仕様として同値になるかは定まってません!
Slide 11
Slide 11 text
より詳しくはブログに書いてます! https://tech.techtouch.jp/entry/go-compiler-study -optimization-undefined-behaviour zero-size の説明もしてます。
Slide 12
Slide 12 text
他のブログもご興味あれば! 「テックタッチ テックブログ Go」で検索🔍