|
楼主 |
发表于 2022-12-5 01:11:43
|
显示全部楼层
湖南省株洲市
修复内存泄露
|
__文本_替换 | 文本型 | | |
原文本 | 文本型 | | | | 替换的数据 | 文本型 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 | 申请内存长度 | 整数型 | | | 指针1 | 整数型 | | | 指针2 | 整数型 | | | 结果指针 | 整数型 | | | i | 整数型 | | | 堆句柄 | 整数型 | | |
指针1 = 0 如果真 (原文本 = “”)返回 (“”)i = __取文本长度_asm (原文本 )如果 (i < 2048 )申请内存长度 = 4096 申请内存长度 = 四舍五入 ( (i × 0.6 + i ) ÷ 4096, 0 ) × 4096 堆句柄 = GetProcessHeap ()指针1 = __申请堆内存_RtlAllocateHeap (堆句柄, 8, 申请内存长度 ) 指针2 = __申请堆内存_RtlAllocateHeap (堆句柄, 8, 申请内存长度 ) 如果真 (指针1 = 0 或 指针2 = 0 )调试输出 (“内存申请失败”)返回 (“”)__写内存地址整数型_asm (指针1, 申请内存长度 ) __写内存地址整数型_asm (指针2, 申请内存长度 )如果真 (取数组成员数 (替换的数据 ) % 2 ≠ 0 )调试输出 (“替换数组错误”)返回 (原文本 )__复制内存_asm (指针1 + 4, __取指针地址_文本型_asm (原文本 ), i + 1 )i = 1 判断循环首 (i < 取数组成员数 (替换的数据 )) 如果真 (替换的数据 [i ] ≠ “”) 如果 (__子文本替换_指针_asm (指针1, 替换的数据 [i ], 替换的数据 [i + 1 ], 指针2 )) 结果指针 = 指针2 指针2 = 指针1 指针1 = 结果指针 申请内存长度 = __指针到整数_asm (指针2 )申请内存长度 = 取整 (申请内存长度 × 0.5 + 申请内存长度 ) 指针2 = __重置内存_RtlReAllocateHeap (堆句柄, 8, 指针2, 申请内存长度 )调试输出 (“内存不够,申请内存”, 指针2, 申请内存长度 )如果真 (指针2 = 0 )调试输出 (“扩展内存失败”)__释放堆内存_RtlFreeHeap (堆句柄, 0, 指针2 ) __释放堆内存_RtlFreeHeap (堆句柄, 0, 指针1 )返回 (原文本 )__写内存地址整数型_asm (指针2, 申请内存长度)到循环尾 ()i = i + 2 判断循环尾 ()__释放堆内存_RtlFreeHeap (堆句柄, 0, 指针2 ) 申请内存长度 = lstrlenA (指针1 + 4 )__复制内存_asm (指针1, 指针1 + 4, 申请内存长度 + 1 ) 置入代码 ({ 139, 69, 252, 201, 194, 8, 0 })返回 (“”)
|
|