其他分享
首页 > 其他分享> > 使用 SWIG 时遇到“Assertion Failed”——问题原因与解决方法

使用 SWIG 时遇到“Assertion Failed”——问题原因与解决方法

作者:互联网

目录

使用 SWIG 时遇到 “Assertion Failed”——问题原因与解决方法

问题

近日在 Windows(64 bit) 上使用 swig 时总是遇到“Assertion Failed”。不仅是我,另一位用户也遇到了同样的麻烦

追踪报错来源发现,swig 在函数 realloc 失败之后直接以“断言”的形式处理失败,这才造成了“Assertion Failed”。

究其根源,从官网上下载的 swig.exe 是 32 位的,而在 64 位操作系统上,一个 32 位 exe 能处理的内存有上限——通常不超过 2Gb。当工程规模扩大之后,swig 生成的 C++ 代码可能超过上百万行,在此期间需要占用大量内存,要求太多内存会导致函数 realloc 失败。

解决

swig 的维护人员已经开始处理内存的问题,相信在新版本可以得到解决。

此外,还有一个“土”办法——用 swig 的源代码重新编译一个 64 位的 exe 替换掉官网发布的文件。

标签:SWIG,Assertion,Failed,64,内存,swig
来源: https://www.cnblogs.com/xuruilong100/p/15971437.html