目录

PixelmapNative API Not Paired

使用OH_PixelmapNative_CreatePixelmap()创建的原生像素图,使用完毕后,需及时调用OH_PixelmapNative_Release()进行释放,避免像素图资源无法回收,造成内存泄漏。

规则配置

// rules.json

{
  "rules": {
     "cpp": {
       "ResourceLeak": [
         {
           "ruleId": "PixelmapNative API Not Paired",
           "severity": "error",
           "skip": false
         }
       ]
     }
   }
}

正例

// 正例代码

#include "multimedia/image_framework/image/pixelmap_native.h"
void CreatePixelmapWithRelease(uint8_t *data, size_t dataLength, OH_Pixelmap_InitializationOptions *options) 
{
    
    OH_PixelmapNative *pixelmap;
    // 创建像素图
    Image_ErrorCode state = OH_PixelmapNative_CreatePixelmap(data, dataLength, options, &pixelmap);
    
    if (state != IMAGE_SUCCESS || pixelmap == nullptr) {
        return;
    }
    
    // 使用 pixelmap 进行图像处理...
    
    // 正确释放像素图资源
    OH_PixelmapNative_Release(pixelmap);
}

反例

// 反例代码

#include "multimedia/image_framework/image/pixelmap_native.h"
void CreatePixelmapWithoutRelease(uint8_t *data, size_t dataLength, OH_Pixelmap_InitializationOptions *options) 
{
    
    OH_PixelmapNative *pixelmap;
    // 创建像素图
    Image_ErrorCode state = OH_PixelmapNative_CreatePixelmap(data, dataLength, options, &pixelmap);
    
    if (state != IMAGE_SUCCESS || pixelmap == nullptr) {
        return;
    }
    
    // 使用 pixelmap...
    
    // 未释放 - 内存泄漏!
}

Code Scanner代码检查规则的配置指导请参考1.6.3 代码检查工具(codescanner)