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