首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MPIR Windows构建中的内存损坏错误

MPIR Windows构建中的内存损坏错误
EN

Stack Overflow用户
提问于 2021-03-18 14:18:46
回答 1查看 48关注 0票数 0

在Windows版本的MPIR中,我遇到了一个内存损坏错误,它显示在下面的最小测试用例中。

微软(R) C/C++优化编译器版本19.25.28610.4用于x64

使用以下脚本从github签出编译了MPIR (刚才已经验证了问题仍然用最新版本重现):

代码语言:javascript
复制
pushd \mpir\msvc\vs19
call msbuild.bat gc DLL x64 Debug
call msbuild.bat gc LIB x64 Release
popd
copy \mpir\dll\x64\Debug\mpir.dll

将此源文件用作测试用例:

代码语言:javascript
复制
#include <stdio.h>
#include <gmp.h>

int main(int argc, const char **argv) {
  mpz_t x;
  mpz_init_set_str(x,"123",10);
  mpz_out_str(stdout,10,x);
  putchar('\n');
  return 0;
}

编制如下:

代码语言:javascript
复制
cl /I\mpir /MTd a.cc \mpir\dll\x64\Debug\mpir.lib

运行结果程序,会产生正确的输出,但退出时显示堆损坏,弹出窗口中有错误消息,不幸的是不允许复制粘贴,但它位于

C:\程序文件(x86)\Windows x86

第996行,即

代码语言:javascript
复制
        _ASSERTE(__acrt_first_block == header);

这是一个已知的解决方案的问题吗?还是有一种已知的方法可以准确地追踪到底出了什么问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-19 17:53:47

我从来没有找到问题的确切原因,但我认为这与构建过程有关,构建过程通过许多抽象层使用MSBuild,因此几乎不可能确切地确定到底发生了什么。

我使用一个简单、透明的构建过程组装了一个MPIR发行版,并且与此版本链接,问题不会发生。

https://github.com/russellw/mpir

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66692966

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档