首页 > 解决方案 > 调用 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);

标签: c++bzip2

解决方案


推荐阅读