ポインタ解析
出典: フリー百科事典『ウィキペディア(Wikipedia)』
ポインタ解析(英: Pointer analysis あるいは points-to analysis )は、計算機科学における静的コード解析の技法のひとつで、ポインタやヒープへの参照がどの変数や記憶領域を指し示す可能性があるかを明らかにするものである。ポインタ解析はしばしば、より複雑な解析手法であるエスケープ解析の一部として用いられる。ポインタ解析を一般化したものがシェープ解析である。
ポインタ解析をごく小規模なプログラムを除く大半のプログラムに適用することは、膨大な計算機資源を必要とする。このオーバーヘッドを減らすため、さまざまな方法の簡略化が行われてきたが、簡略化による問題として参照されているオブジェクトが実際より大きな範囲になることがある。
簡略化の方法として、下記のものがある。
- 構造化されたオブジェクトへのすべての参照をひとつのオブジェクトに対するものとして扱う。
- どのオブジェクトがポインタに割り当てられるかを解析する際、制御のフローを無視する。
- コンテキストを無視したポインタ解析 (関数呼び出しが行われる際のコンテキストを無視する場合)
- フローを無視したポインタ解析(関数内の制御フローを無視する場合)
アルゴリズム [編集]
- アンダーソンのアルゴリズム
- 二分決定図