EN JP CN

ANDROID.UF.BITMAP

ANDROID.UF.BITMAP

UF (Use Freed) 問題は、リソースが解放された後にリソースを使用する試みがある場合に報告されます。ANDROID.UF.BITMAP 警告は、Bitmap がリサイクルされた後に Bitmap からピクセルを取得する試みや Bitmap にピクセルを設定する試みがあることを示します。

例 1

19     public void addWatermark(final byte[] data) {
20         final Bitmap bmp = loadBitmap(data);
21         if (bmp != null) {
22             final int width = bmp.getWidth();
23             for (int i = 0; i < width; i++) {
24                 bmp.setPixel(i, i, Color.argb(255, 0, 0, 0));
25             }
26         }
27     }
28 
29     private Bitmap loadBitmap(byte[] data) {
30         final Bitmap bmp = BitmapFactory.decodeByteArray(data, 0, data.length);
31         if (bmp == null) {
32             Log.d(TAG, "Was not able to decode an image");
33         }
34 
35         final int width = bmp.getWidth();
36         final int height = bmp.getHeight();
37         if (width <= 3 || height <= 3 ) {
38             bmp.recycle();
39         }
40         return bmp;
41     }

ビットマップのサイズのいずれかが「3」未満の場合に 'loadBitmap()' メソッドでビットマップがリサイクルされる (38 行目) ため、ANDROID.UF.BITMAP が 24 行目のスニペットに対して報告されます。

拡張機能

このチェッカーは、Klocwork knowledge base (ナレッジベース) を利用して拡張できます。詳細については、Java 解析のチューニングを参照してください。