# Memory ## 概述 提供内存管理能力。 @Syscap SystemCapability.CommonLibrary.PurgeableMemory **起始版本:** 10 ## 汇总 ### 文件 | 名称 | 描述 | | -------- | -------- | | [purgeable_memory.h](purgeable__memory_8h.md) | 声明从native层管理可丢弃内存的方法。
**引用文件**:
**库**:libpurgeable_memory_ndk.z.so | ### 类型定义 | 名称 | 描述 | | -------- | -------- | | [OH_PurgeableMemory](#oh_purgeablememory) | 用于定义OH_PurgeableMemory数据类型名称。 | | (\*[OH_PurgeableMemory_ModifyFunc](#oh_purgeablememory_modifyfunc)) (void \*, size_t, void \*) | 用于重建可丢弃内存PurgeableMemory数据的方法。 | ### 函数 | 名称 | 描述 | | -------- | -------- | | \*[OH_PurgeableMemory_Create](#oh_purgeablememory_create) (size_t size, [OH_PurgeableMemory_ModifyFunc](#oh_purgeablememory_modifyfunc) func, void \*funcPara) | 创建**PurgeableMemory**对象。 | | [OH_PurgeableMemory_Destroy](#oh_purgeablememory_destroy) ([OH_PurgeableMemory](#oh_purgeablememory) \*purgObj) | 销毁**PurgeableMemory**对象。 | | [OH_PurgeableMemory_BeginRead](#oh_purgeablememory_beginread) ([OH_PurgeableMemory](#oh_purgeablememory) \*purgObj) | 开始读取**PurgeableMemory**对象。检查PurgeableMemory是否被回收, 若被回收则调用重建方法进行重建 | | [OH_PurgeableMemory_EndRead](#oh_purgeablememory_endread) ([OH_PurgeableMemory](#oh_purgeablememory) \*purgObj) | 结束读取**PurgeableMemory**对象。表示系统可回收该**PurgeableMemory**对象内存数据。 | | [OH_PurgeableMemory_BeginWrite](#oh_purgeablememory_beginwrite) ([OH_PurgeableMemory](#oh_purgeablememory) \*purgObj) | 开始修改**PurgeableMemory**对象。检查PurgeableMemory是否被回收, 若被回收则调用重建方法进行重建 | | [OH_PurgeableMemory_EndWrite](#oh_purgeablememory_endwrite) ([OH_PurgeableMemory](#oh_purgeablememory) \*purgObj) | 结束修改**PurgeableMemory**对象。表示系统可回收该**PurgeableMemory**对象内存数据。 | | [OH_PurgeableMemory_GetContent](#oh_purgeablememory_getcontent) ([OH_PurgeableMemory](#oh_purgeablememory) \*purgObj) | 获取**PurgeableMemory**对象内存数据。 | | [OH_PurgeableMemory_ContentSize](#oh_purgeablememory_contentsize) ([OH_PurgeableMemory](#oh_purgeablememory) \*purgObj) | 获取**PurgeableMemory**对象内存数据大小。 | | [OH_PurgeableMemory_AppendModify](#oh_purgeablememory_appendmodify) ([OH_PurgeableMemory](#oh_purgeablememory) \*purgObj, [OH_PurgeableMemory_ModifyFunc](#oh_purgeablememory_modifyfunc) func, void \*funcPara) | 添加**PurgeableMemory**对象的修改方法。 | ## 类型定义说明 ### OH_PurgeableMemory ``` typedef struct PurgMem OH_PurgeableMemory ``` **描述:** 用于定义OH_PurgeableMemory数据类型名称。 **起始版本:** 10 ### OH_PurgeableMemory_ModifyFunc ``` typedef bool(* OH_PurgeableMemory_ModifyFunc) (void *, size_t, void *) ``` **描述:** 用于重建可丢弃内存PurgeableMemory数据的方法。 **参数:** | 名称 | 描述 | | -------- | -------- | | void \* | 指向PurgeableMemory内容的内存地址。 | | size_t | 重建内容的大小。 | | void \* | 重建参数。 | **返回:** 操作成功则返回成功;如果操作失败,则返回失败。 **起始版本:** 10 ## 函数说明 ### OH_PurgeableMemory_AppendModify() ``` bool OH_PurgeableMemory_AppendModify (OH_PurgeableMemory * purgObj, OH_PurgeableMemory_ModifyFunc func, void * funcPara ) ``` **描述:** 添加**PurgeableMemory**对象的修改方法。 **参数:** | 名称 | 描述 | | -------- | -------- | | purgObj | 待添加修改方法的PurgeableMemory对象。 | | func | 关于数据修改方法的函数指针,用于PurgeableMemory内存数据重建后进一步修改。 | | funcPara | 修改方法的参数。 | **返回:** 如果添加成功则返回成功,否则返回失败。 **起始版本:** 10 ### OH_PurgeableMemory_BeginRead() ``` bool OH_PurgeableMemory_BeginRead (OH_PurgeableMemory * purgObj) ``` **描述:** 开始读取**PurgeableMemory**对象。检查PurgeableMemory是否被回收, 若被回收则调用重建方法进行重建 **参数:** | 名称 | 描述 | | -------- | -------- | | purgObj | 待读取的PurgeableMemory对象。 | **返回:** 如果PurgeableMemory内存数据准备好则返回成功; 如果PurgeableMemory内存数据已被回收且重建失败则返回失败。 **起始版本:** 10 ### OH_PurgeableMemory_BeginWrite() ``` bool OH_PurgeableMemory_BeginWrite (OH_PurgeableMemory * purgObj) ``` **描述:** 开始修改**PurgeableMemory**对象。检查PurgeableMemory是否被回收, 若被回收则调用重建方法进行重建 **参数:** | 名称 | 描述 | | -------- | -------- | | purgObj | 待修改的PurgeableMemory对象。 | **返回:** 如果PurgeableMemory内存数据准备好则返回成功; 如果PurgeableMemory内存数据已被回收且重建失败则返回失败。 **起始版本:** 10 ### OH_PurgeableMemory_ContentSize() ``` size_t OH_PurgeableMemory_ContentSize (OH_PurgeableMemory * purgObj) ``` **描述:** 获取**PurgeableMemory**对象内存数据大小。 **参数:** | 名称 | 描述 | | -------- | -------- | | purgObj | 待读取内存数据的PurgeableMemory对象。 | **返回:** 返回PurgeableMemory对象内存数据大小。 **起始版本:** 10 ### OH_PurgeableMemory_Create() ``` OH_PurgeableMemory* OH_PurgeableMemory_Create (size_t size, OH_PurgeableMemory_ModifyFunc func, void * funcPara ) ``` **描述:** 创建**PurgeableMemory**对象。 **参数:** | 名称 | 描述 | | -------- | -------- | | size | PurgeableMemory对象大小。 | | func | 关于重建方法的函数指针,用于恢复被回收的PurgeableMemory内存数据。 | | funcPara | 用于重建的参数。 | **返回:** 返回PurgeableMemory对象。 **起始版本:** 10 ### OH_PurgeableMemory_Destroy() ``` bool OH_PurgeableMemory_Destroy (OH_PurgeableMemory * purgObj) ``` **描述:** 销毁**PurgeableMemory**对象。 **参数:** | 名称 | 描述 | | -------- | -------- | | purgObj | 需要销毁的PurgeableMemory对象。 | **返回:** 操作成功则返回成功;如果操作失败,则返回失败。如果purgObj为空则返回失败; 如果返回成功,purgObj会置空避免Use-After-Free。 **起始版本:** 10 ### OH_PurgeableMemory_EndRead() ``` void OH_PurgeableMemory_EndRead (OH_PurgeableMemory * purgObj) ``` **描述:** 结束读取**PurgeableMemory**对象。表示系统可回收该**PurgeableMemory**对象内存数据。 **参数:** | 名称 | 描述 | | -------- | -------- | | purgObj | 结束读取的PurgeableMemory对象。 | **起始版本:** 10 ### OH_PurgeableMemory_EndWrite() ``` void OH_PurgeableMemory_EndWrite (OH_PurgeableMemory * purgObj) ``` **描述:** 结束修改**PurgeableMemory**对象。表示系统可回收该**PurgeableMemory**对象内存数据。 **参数:** | 名称 | 描述 | | -------- | -------- | | purgObj | 结束修改的**PurgeableMemory**对象。 | **起始版本:** 10 ### OH_PurgeableMemory_GetContent() ``` void* OH_PurgeableMemory_GetContent (OH_PurgeableMemory * purgObj) ``` **描述:** 获取**PurgeableMemory**对象内存数据。 **参数:** | 名称 | 描述 | | -------- | -------- | | purgObj | 待读取内存数据的PurgeableMemory对象。 | **返回:** 返回PurgeableMemory对象内存地址。 **起始版本:** 10