c++ - 调用 BZ2_bzWriteClose 时的 Bzip2 STATUS_STACK_BUFFER_OVERRUN
问题描述
我想在我正在处理的 c++ 项目中使用 bzip2,所以在我开始在任何我想做的快速测试的地方使用它之前。测试只是打开一个文件,然后将一些数据写入其中,然后关闭该文件。在 Linux 上,下面的代码运行良好,完全符合我的预期,但在 Windows 上,调用 BZ2_bzWriteClose 时出现 0xc0000409(STATUS_STACK_BUFFER_OVERRUN) 异常。在 Windows 上,我使用 bzip2:x86-windows vcpkg 包安装了该库。我正在使用 vs2019 的 msvc 编译器。
我不确定为什么会发生这种情况,也不知道如何解决这个问题。
代码示例(我省略了错误处理):
int bzError;
FILE* fp = fopen("test.bz2", "wb");
BZFILE *bzFile = BZ2_bzWriteOpen(&bzError, fp, 9, 0, 0);
vector<char> content = {'a', 'm', 'g', 'd', 'z'};
char* buffer = content.data();
int size = content.size();
BZ2_bzWrite(&bzError, bzFile, buffer, size);
BZ2_bzWriteClose(&bzError, bzFile, 0, nullptr, nullptr);
fclose(fp);
解决方案
推荐阅读
- mongodb - 创建文档时,如何将 objectId 的值设置为与 _id 不同的另一个属性?
- substrate - Substrate 链下签名交易问题
- firebase - Flutter firebase 从真实设备连接到模拟器
- css - 将多行文本右侧的图标与列表项对齐
- windows - Powershell:从设备管理器中检索“Numa Node”属性
- python - make_grid() 如何改变张量的维度?
- sql-server - 将数据从 SQL Server 插入到 Postgres - UTF8 0x00 错误
- xamarin.forms - 从 Google Cloud Firestore 获取数据
- c++ - 在 C++ 中使用 UTF-8 字符串正确检查回文
- swift - 不再检测到图像时,ARKit 会重置视频播放器