超级压缩解压模块支持gzip br 7z zip等易语言源码本 DLL 提供了一套功能全面且线程安全的压缩与解压缩解决方案,专为易语言等支持 `stdcall` 调用约定的环境设计。 V2.1.0 版本对内存管理进行了智能化升级,提供了极高的容错性。

性能与限制【重要】 文件操作 vs. 内存操作

文件操作 (`ExtractFile`, `CompressFile`):
原理: 采用流式处理 (Streaming),内存占用极小且恒定。
优势: 可以处理任意大小的文件(如100GB),唯一的限制是您的硬盘空间和处理时间。
建议: 处理大文件(如 > 1GB)时,必须使用文件操作函数。

内存操作 (`ExtractToMemory`, `Compress`, etc.):
原理: 需要在内存中同时持有输入数据和输出数据。
限制: 最大可处理的数据量完全取决于可用内存。例如,解压一个1GB的文件,如果解压后变为5GB,则至少需要6GB的空闲内存。
建议: 仅用于处理您能确定大小在内存容量范围内的中小数据。

x86 (32位) DLL:
硬性限制: 32位程序自身最多只能使用 ~2GB 的内存,这是架构限制,与您的物理内存大小无关。
后果: 如果使用 x86 DLL 进行内存操作,当“输入数据+输出数据”的总量接近2GB时,程序必定会因内存不足而失败。
建议: 在32位环境下,内存操作处理的数据总量建议远低于1.5GB,以确保稳定。

x64 (64位) DLL:
限制: 可用内存上限极高,实际只受您电脑的物理内存限制。
优势: 在拥有64GB内存的机器上,可以自由地在内存中处理数十GB的数据。
建议: 若需处理大型数据,强烈建议使用64位环境和 x64 DLL。
核心特性

多格式支持:
解压缩: 自动识别并解压 `Gzip`, `Zlib/Deflate`, `Zip` 格式的内存数据。提供独立的函数用于解压 `Brotli` 和 `7z`,`rar`也应该行。
压缩: 支持将内存数据压缩为 `Gzip`, `Brotli`, `Zlib/Deflate`。支持将多个文件或目录压缩为 `Zip` 压缩包。
智能内存管理:
绝对安全: `compress_pro_free` 函数经过特殊设计,随意调用(如重复释放、传递无效或空指针)也不会导致程序崩溃,大大提升了程序的健壮性。
API简化: 释放内存仅需传递指针,符合常规使用习惯。
现代API设计:
无全局状态: 所有操作都通过函数参数进行配置,使并发执行多个任务成为可能。
任务标签 (Tag): 每个耗时的操作(文件压缩/解压)都接受一个用户定义的 `Callback_TAG`,用于在回调和取消时唯一标识一个任务。
线程安全: 所有耗时的文件操作都在独立的背景线程中执行,不会阻塞主线程(UI线程)。函数会等待操作完成后返回最终结果。
详细错误码: 提供统一且详细的错误码,方便调试。
编码自动转换: 自动处理易语言传入的GBK编码路径和传出的GBK编码回调信息,无需用户手动转换。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系贝贝进行处理。
本站默认解压密码:www.hibbba.com