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