タグ

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

  • 関連タグはありません

タグの絞り込みを解除

Go言語に関するs_hiiragiのブックマーク (1)

  • go:noescape - はらへメモ

    goのソース読んでるとたまに見かける go:noescape についてメモ. go:noescapeはGoコンパイラのエスケープ解析へのヒント。 エスケープとは、関数内でメモリに割り当てられた値が関数が終了したあとも、呼び出し元の関数や別のスレッドから値が参照されること Goのコンパイラは値をヒープよりもスタックに割り当てようとする。スタックに割り当てると関数を抜けるとメモリ領域が廃棄されるので、ヒープ領域の取得やGCの回収するコストがかからずヒープに割り当てられるよりコストが低い。 だが、スタックに割り当てられた値のポインタがエスケープして参照されると、ダングリングポインタ(dangling pointer)が発生するので、エスケープ解析によってエスケープされないことがわかる値だけをスタックに割り当てる。 しかし、コンパイラはGoで書かれていない関数はエスケープ解析ができない。そのような

    go:noescape - はらへメモ
  • 1