1# Memory 2 3 4## 概述 5 6提供内存管理能力。 7 8@Syscap SystemCapability.CommonLibrary.PurgeableMemory 9 10**起始版本:** 11 1210 13 14 15## 汇总 16 17 18### 文件 19 20| 名称 | 描述 | 21| -------- | -------- | 22| [purgeable_memory.h](purgeable__memory_8h.md) | 声明从native层管理可丢弃内存的方法。<br>**引用文件**:<purgeable_memory/purgeable_memory.h> <br>**库**:libpurgeable_memory_ndk.z.so | 23 24 25### 类型定义 26 27| 名称 | 描述 | 28| -------- | -------- | 29| [OH_PurgeableMemory](#oh_purgeablememory) | 用于定义OH_PurgeableMemory数据类型名称。 | 30| (\*[OH_PurgeableMemory_ModifyFunc](#oh_purgeablememory_modifyfunc)) (void \*, size_t, void \*) | 用于重建可丢弃内存PurgeableMemory数据的方法。 | 31 32 33### 函数 34 35| 名称 | 描述 | 36| -------- | -------- | 37| \*[OH_PurgeableMemory_Create](#oh_purgeablememory_create) (size_t size, [OH_PurgeableMemory_ModifyFunc](#oh_purgeablememory_modifyfunc) func, void \*funcPara) | 创建**PurgeableMemory**对象。 | 38| [OH_PurgeableMemory_Destroy](#oh_purgeablememory_destroy) ([OH_PurgeableMemory](#oh_purgeablememory) \*purgObj) | 销毁**PurgeableMemory**对象。 | 39| [OH_PurgeableMemory_BeginRead](#oh_purgeablememory_beginread) ([OH_PurgeableMemory](#oh_purgeablememory) \*purgObj) | 开始读取**PurgeableMemory**对象。检查PurgeableMemory是否被回收, 若被回收则调用重建方法进行重建 | 40| [OH_PurgeableMemory_EndRead](#oh_purgeablememory_endread) ([OH_PurgeableMemory](#oh_purgeablememory) \*purgObj) | 结束读取**PurgeableMemory**对象。表示系统可回收该**PurgeableMemory**对象内存数据。 | 41| [OH_PurgeableMemory_BeginWrite](#oh_purgeablememory_beginwrite) ([OH_PurgeableMemory](#oh_purgeablememory) \*purgObj) | 开始修改**PurgeableMemory**对象。检查PurgeableMemory是否被回收, 若被回收则调用重建方法进行重建 | 42| [OH_PurgeableMemory_EndWrite](#oh_purgeablememory_endwrite) ([OH_PurgeableMemory](#oh_purgeablememory) \*purgObj) | 结束修改**PurgeableMemory**对象。表示系统可回收该**PurgeableMemory**对象内存数据。 | 43| [OH_PurgeableMemory_GetContent](#oh_purgeablememory_getcontent) ([OH_PurgeableMemory](#oh_purgeablememory) \*purgObj) | 获取**PurgeableMemory**对象内存数据。 | 44| [OH_PurgeableMemory_ContentSize](#oh_purgeablememory_contentsize) ([OH_PurgeableMemory](#oh_purgeablememory) \*purgObj) | 获取**PurgeableMemory**对象内存数据大小。 | 45| [OH_PurgeableMemory_AppendModify](#oh_purgeablememory_appendmodify) ([OH_PurgeableMemory](#oh_purgeablememory) \*purgObj, [OH_PurgeableMemory_ModifyFunc](#oh_purgeablememory_modifyfunc) func, void \*funcPara) | 添加**PurgeableMemory**对象的修改方法。 | 46 47 48## 类型定义说明 49 50 51### OH_PurgeableMemory 52 53 54``` 55typedef struct PurgMem OH_PurgeableMemory 56``` 57 58**描述:** 59 60用于定义OH_PurgeableMemory数据类型名称。 61 62**起始版本:** 63 6410 65 66 67### OH_PurgeableMemory_ModifyFunc 68 69 70``` 71typedef bool(* OH_PurgeableMemory_ModifyFunc) (void *, size_t, void *) 72``` 73 74**描述:** 75 76用于重建可丢弃内存PurgeableMemory数据的方法。 77 78**参数:** 79 80| 名称 | 描述 | 81| -------- | -------- | 82| void \* | 指向PurgeableMemory内容的内存地址。 | 83| size_t | 重建内容的大小。 | 84| void \* | 重建参数。 | 85 86**返回:** 87 88操作成功则返回成功;如果操作失败,则返回失败。 89 90**起始版本:** 91 9210 93 94 95## 函数说明 96 97 98### OH_PurgeableMemory_AppendModify() 99 100 101``` 102bool OH_PurgeableMemory_AppendModify (OH_PurgeableMemory * purgObj, OH_PurgeableMemory_ModifyFunc func, void * funcPara ) 103``` 104 105**描述:** 106 107添加**PurgeableMemory**对象的修改方法。 108 109**参数:** 110 111| 名称 | 描述 | 112| -------- | -------- | 113| purgObj | 待添加修改方法的PurgeableMemory对象。 | 114| func | 关于数据修改方法的函数指针,用于PurgeableMemory内存数据重建后进一步修改。 | 115| funcPara | 修改方法的参数。 | 116 117**返回:** 118 119如果添加成功则返回成功,否则返回失败。 120 121**起始版本:** 122 12310 124 125 126### OH_PurgeableMemory_BeginRead() 127 128 129``` 130bool OH_PurgeableMemory_BeginRead (OH_PurgeableMemory * purgObj) 131``` 132 133**描述:** 134 135开始读取**PurgeableMemory**对象。检查PurgeableMemory是否被回收, 若被回收则调用重建方法进行重建 136 137**参数:** 138 139| 名称 | 描述 | 140| -------- | -------- | 141| purgObj | 待读取的PurgeableMemory对象。 | 142 143**返回:** 144 145如果PurgeableMemory内存数据准备好则返回成功; 如果PurgeableMemory内存数据已被回收且重建失败则返回失败。 146 147**起始版本:** 148 14910 150 151 152### OH_PurgeableMemory_BeginWrite() 153 154 155``` 156bool OH_PurgeableMemory_BeginWrite (OH_PurgeableMemory * purgObj) 157``` 158 159**描述:** 160 161开始修改**PurgeableMemory**对象。检查PurgeableMemory是否被回收, 若被回收则调用重建方法进行重建 162 163**参数:** 164 165| 名称 | 描述 | 166| -------- | -------- | 167| purgObj | 待修改的PurgeableMemory对象。 | 168 169**返回:** 170 171如果PurgeableMemory内存数据准备好则返回成功; 如果PurgeableMemory内存数据已被回收且重建失败则返回失败。 172 173**起始版本:** 174 17510 176 177 178### OH_PurgeableMemory_ContentSize() 179 180 181``` 182size_t OH_PurgeableMemory_ContentSize (OH_PurgeableMemory * purgObj) 183``` 184 185**描述:** 186 187获取**PurgeableMemory**对象内存数据大小。 188 189**参数:** 190 191| 名称 | 描述 | 192| -------- | -------- | 193| purgObj | 待读取内存数据的PurgeableMemory对象。 | 194 195**返回:** 196 197返回PurgeableMemory对象内存数据大小。 198 199**起始版本:** 200 20110 202 203 204### OH_PurgeableMemory_Create() 205 206 207``` 208OH_PurgeableMemory* OH_PurgeableMemory_Create (size_t size, OH_PurgeableMemory_ModifyFunc func, void * funcPara ) 209``` 210 211**描述:** 212 213创建**PurgeableMemory**对象。 214 215**参数:** 216 217| 名称 | 描述 | 218| -------- | -------- | 219| size | PurgeableMemory对象大小。 | 220| func | 关于重建方法的函数指针,用于恢复被回收的PurgeableMemory内存数据。 | 221| funcPara | 用于重建的参数。 | 222 223**返回:** 224 225返回PurgeableMemory对象。 226 227**起始版本:** 228 22910 230 231 232### OH_PurgeableMemory_Destroy() 233 234 235``` 236bool OH_PurgeableMemory_Destroy (OH_PurgeableMemory * purgObj) 237``` 238 239**描述:** 240 241销毁**PurgeableMemory**对象。 242 243**参数:** 244 245| 名称 | 描述 | 246| -------- | -------- | 247| purgObj | 需要销毁的PurgeableMemory对象。 | 248 249**返回:** 250 251操作成功则返回成功;如果操作失败,则返回失败。如果purgObj为空则返回失败; 如果返回成功,purgObj会置空避免Use-After-Free。 252 253**起始版本:** 254 25510 256 257 258### OH_PurgeableMemory_EndRead() 259 260 261``` 262void OH_PurgeableMemory_EndRead (OH_PurgeableMemory * purgObj) 263``` 264 265**描述:** 266 267结束读取**PurgeableMemory**对象。表示系统可回收该**PurgeableMemory**对象内存数据。 268 269**参数:** 270 271| 名称 | 描述 | 272| -------- | -------- | 273| purgObj | 结束读取的PurgeableMemory对象。 | 274 275**起始版本:** 276 27710 278 279 280### OH_PurgeableMemory_EndWrite() 281 282 283``` 284void OH_PurgeableMemory_EndWrite (OH_PurgeableMemory * purgObj) 285``` 286 287**描述:** 288 289结束修改**PurgeableMemory**对象。表示系统可回收该**PurgeableMemory**对象内存数据。 290 291**参数:** 292 293| 名称 | 描述 | 294| -------- | -------- | 295| purgObj | 结束修改的**PurgeableMemory**对象。 | 296 297**起始版本:** 298 29910 300 301 302### OH_PurgeableMemory_GetContent() 303 304 305``` 306void* OH_PurgeableMemory_GetContent (OH_PurgeableMemory * purgObj) 307``` 308 309**描述:** 310 311获取**PurgeableMemory**对象内存数据。 312 313**参数:** 314 315| 名称 | 描述 | 316| -------- | -------- | 317| purgObj | 待读取内存数据的PurgeableMemory对象。 | 318 319**返回:** 320 321返回PurgeableMemory对象内存地址。 322 323**起始版本:** 324 32510 326