使用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)