跳转至

heap_base

heap_base 模块提供堆内存基类,作为UI框架对象的内存分配基础。

Class Summary

OHOS::HeapBase

重载 new 和 delete 函数的基类,为派生类提供自定义内存分配与释放能力

  • 构造:无
  • 成员函数

    接口名称 功能简述
    operator new 重载 new 运算符,通过 UIMalloc 分配内存
    operator new 重载 nothrow new 运算符,通过 UIMalloc 分配内存且不抛出异常
    operator delete 重载 delete 运算符,通过 UIFree 释放内存
  • 使用包含头文件#include "gfx_utils/heap_base.h"

  • 声明头文件middleware/services/gui/uikit/utils/interfaces/kits/gfx_utils/heap_base.h
  • 公有运算符void* operator new(size_t size)void* operator new(size_t size, const std::nothrow_t&) noexceptvoid operator delete(void* p)
  • 继承关系:无
  • 嵌套类型:无
  • 模板形参:无

Functions

OHOS::HeapBase

operator new

void* operator new(size_t size)

功能说明

  • 核心用途:重载 new 运算符,使派生类对象通过 new 创建时调用 UIMalloc 分配内存
  • 设计目的:为图形模块提供统一的内存分配入口,便于内存使用统计与管控
  • 使用场景:派生类使用 new 表达式创建对象时自动调用

入参

名称 参数类型 详细说明 约束取值范围
size size_t 待分配的内存大小(字节数) 大于 0

返回值

  • 返回类型:void*

返回分配的内存地址

返回值 触发场景
非 nullptr 指针 内存分配成功
nullptr 内存分配失败

Kconfig 配置

配置项 说明 默认值
ENABLE_MEMORY_HOOKS 启用内存钩子,控制 operator new/delete 重载是否生效 1(开启)

operator new

void* operator new(size_t size, const std::nothrow_t&) noexcept

功能说明

  • 核心用途:重载 nothrow new 运算符,通过 UIMalloc 分配内存且承诺不抛出异常
  • 设计目的:为需要异常安全保证的场景提供不抛异常的内存分配方式,分配失败时返回 nullptr
  • 使用场景:使用 new (std::nothrow) 表达式创建对象时自动调用

入参

名称 参数类型 详细说明 约束取值范围
size size_t 待分配的内存大小(字节数) 大于 0
const std::nothrow_t& nothrow 标记,指示此重载不抛出异常 std::nothrow

返回值

  • 返回类型:void*

返回分配的内存地址

返回值 触发场景
非 nullptr 指针 内存分配成功
nullptr 内存分配失败

Kconfig 配置

配置项 说明 默认值
ENABLE_MEMORY_HOOKS 启用内存钩子,控制 operator new/delete 重载是否生效 1(开启)

operator delete

void operator delete(void* p)

功能说明

  • 核心用途:重载 delete 运算符,使派生类对象通过 delete 释放时调用 UIFree 释放内存
  • 设计目的:与 operator new 配对,确保通过 UIMalloc 分配的内存使用 UIFree 释放,保持内存管理一致性
  • 使用场景:派生类使用 delete 表达式销毁对象时自动调用

入参

名称 参数类型 详细说明 约束取值范围
p void* 指向待释放内存的指针 可为 nullptr

Kconfig 配置

配置项 说明 默认值
ENABLE_MEMORY_HOOKS 启用内存钩子,控制 operator new/delete 重载是否生效 1(开启)