zbuff_memory.lua 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. --[[
  2. @module zbuff_memory
  3. @summary zbuff的内存管理模块
  4. @version 1.0.0
  5. @date 2025.08.08
  6. @author 王棚嶙
  7. @usage
  8. 本文件为zbuff的内存管理模块,核心业务逻辑为内存管理操作,包括:
  9. 1.缓冲区大小调整
  10. 2.内存块设置
  11. 3.数据删除
  12. 4.内存比较
  13. 5.Base64编码转换功能
  14. 本文件没有对外接口,直接在main.lua中require "zbuff_memory"就可以加载运行
  15. ]]
  16. local function zbuff_memory_task_func()
  17. --[[内存管理操作演示@param buff zbuff对象]]
  18. log.info("zbuff_memory", "启动内存管理功能演示")
  19. -- 1. 调整缓冲区大小
  20. local buff = zbuff.create(1024)
  21. local original_size = buff:len()
  22. buff:resize(2048) -- 扩容到2048字节
  23. log.info("zbuff_memory", "大小调整", "原始大小:", original_size, "新大小:", buff:len())
  24. -- 2. 内存块设置(类似memset)
  25. -- 从位置10开始设置5个字节为0xaa
  26. buff:set(10,0xaa,5)
  27. log.info("zbuff_memory", "内存设置", "位置10-14设置为0xaa")
  28. -- 验证设置结果
  29. log.info("zbuff_memory", "验证结果", "位置10:", buff[10], "应为0xaa")
  30. -- 3. 数据删除操作
  31. -- 写入测试数据
  32. buff:clear()
  33. buff:seek(0)
  34. buff:write("ABCDEFGH")
  35. log.info("zbuff_memory", "删除前数据", buff:toStr())
  36. -- 删除位置2开始的3个字节
  37. buff:del(2, 3)
  38. log.info("zbuff_memory", "删除操作", "删除位置2-4", "结果:", buff:toStr())
  39. -- 4. 内存比较
  40. local buff2 = zbuff.create(10)
  41. buff2:write("12345")
  42. -- 比较两个缓冲区前5字节内容
  43. local equal, offset = buff:isEqual(0, buff2, 0, 5)
  44. log.info("zbuff_memory", "内存比较", "结果:", equal, "差异位置:", offset)
  45. -- 5. Base64编码转换
  46. local dst = zbuff.create(buff:used() * 2) -- 创建足够大的目标缓冲区
  47. -- 进行Base64编码
  48. local len = buff:toBase64(dst)
  49. log.info("zbuff_memory", "Base64编码", "长度:", len, "结果:", dst:toStr(0, len))
  50. log.info("zbuff_memory", "内存管理功能演示完成")
  51. end
  52. sys.taskInit(zbuff_memory_task_func)