# Memory ## 概述 æä¾›å†…å˜ç®¡ç†èƒ½åŠ›ã€‚ @Syscap SystemCapability.CommonLibrary.PurgeableMemory **起始版本:** 10 ## 汇总 ### 文件 | åç§° | æè¿° | | -------- | -------- | | [purgeable_memory.h](purgeable__memory_8h.md) | 声明从native层管ç†å¯ä¸¢å¼ƒå†…å˜çš„æ–¹æ³•。<br>**引用文件**:<purgeable_memory/purgeable_memory.h> <br>**库**: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