[adlint-user-ja:80] Re: 多次元配列における解析エラーについて
Open source and free source code static analyzer
Brought to you by:
asamiogis
From: Yutaka Y. <ya...@us...> - 2013-08-08 00:09:15
|
矢野尾です。 ご報告ありがとうございます。 > 仕様上の制限や、必要な設定などありましたらご教示いただけますでしょうか。 > 宜しくお願いいたします。 AdLint の仕様といたしましては、ご提示いただいたコードをそのまま解析可能 です。したがって、本件は AdLint の不具合です。 おそらく、AdLint 内部の抽象インタプリタで TestStructure 配列をそのまま確 保しようとしてメモリを使い果たしているようです。 AdLint は、C 言語プログラム中の変数それぞれについて、データフロー解析の ための多くの付加情報を確保するため、どうしてもメモリを多く必要とします。 本質的な解決には、変数ひとつに対応する情報量を減らすことが必要ですが、ま ずは TestStructure のような大きな変数については、要素数に上限を設けるこ とで対応しようと思います。 現在、次のリリースのための追加機能を実装中でして、対応まで少々お時間をく ださい。 以上 -- 矢野尾 裕 <ya...@us...> (2013年08月06日 17:45), tos...@hi... wrote: > > はじめまして。 > 西田と申します。 > > 最近、AdLintを使い始めたのですが、 > 下記のように、比較的大きい多次元配列の定義を含むコードの解析にて、 > 「failed to allocate memory」が発生し、解析が61%で終了してしまいます。 > > (Sample Code) > -------------------------------------------- > unsigned char TestStructure[200][200][200]; > > int main(int argc, char *argv[]) > { > return 0; > } > -------------------------------------------- > > 解析中、topコマンドでメモリ使用率を確認すると、 > 明らかに上昇していく様子が見られ、100%に達すると上記エラーが出ます。 > (なお、検討PCの搭載メモリは2GBです) > > 検討環境は以下の通りです。 > > OS : Ubuntu 10.10 > AdLint Version : 3.0.10 (2013-06-28) > Ruby Version : ruby 2.0.0p247 (2013-06-27 revision 41674) [i686-linux] > > 仕様上の制限や、必要な設定などありましたらご教示いただけますでしょうか。 > 宜しくお願いいたします。 |