矢野尾です。
ご報告ありがとうございます。
> 仕様上の制限や、必要な設定などありましたらご教示いただけますでしょうか。
> 宜しくお願いいたします。
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]
>
> 仕様上の制限や、必要な設定などありましたらご教示いただけますでしょうか。
> 宜しくお願いいたします。
|