单元内存池循环申请就等于动态内存,不必精确到字节,精确到“网格”即可
|
内存池_写入 | 整数型 | | |
数据句柄 | 整数型 | | | | 数据缓存 | 整数型 | | | | 数据长度 | 整数型 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 | 块尺寸 | 整数型 | | | 数据尺寸 | 整数型 | | | 索引句柄 | 整数型 | | | 剩余长度 | 整数型 | | | 写指针 | 整数型 | | | 下一个 | 整数型 | | | 写入地址 | 整数型 | | | 如果真 (数据长度 = 0 ) 返回 (0 ) 块尺寸 = 读整数 (数据句柄, #内存池_块尺寸 )数据尺寸 = Sub (块尺寸, 8 )索引句柄 = _内存池_申请 (数据句柄 )写入地址 = 索引句柄 变量循环首 (0, Dec (数据长度 ), 数据尺寸, 写指针 ) 剩余长度 = Sub (数据长度, 写指针 ) 如果 (剩余长度 > 数据尺寸 ) RtlMoveMemory_Nt (Add (写入地址, 8 ), Add (数据缓存, 写指针 ), 数据尺寸 )  下一个 = _内存池_申请 (数据句柄 )   RtlMoveMemory_Nt (Add (写入地址, 8 ), Add (数据缓存, 写指针 ), 剩余长度 )  下一个 = 0   写整数 (写入地址, 0, 下一个 ) 写整数 (写入地址, 4, 剩余长度 ) 写入地址 = 下一个 变量循环尾 ()返回 (索引句柄 ) |