在为我的C++算法编写了一个SWIG包装之后,当我在导入模块后退出Python解释器时,我经常会遇到这个错误:
$ python
iPython 2.5.6 (r256:88840, Mar 10 2012, 14:05:15)
[GCC 4.4.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>from algol import *
>>>
*** glibc detected *** python: double free or corruption (!prev): 0x0000000001e42430 ***那我就得Ctrl+C回来控制.发生什么事了?
我正在运行以下命令来构建我的酒杯包装器:
$NAME=algol
swig -c++ -python $NAME.i
g++ -fpic -c $NAME.cpp $NAME.hpp $NAME\_wrap.cxx -I/usr/local/include/python2.5
g++ -Xlinker -zmuldefs -shared $NAME.o $NAME\_wrap.o -o _$NAME.so我的swig接口文件只是algol.hpp的一个包含:
%module algol
%{
#include "algol.hpp"
%}
%include "algol.hpp"你对此有何看法?
编辑:附在这里的示例源代码-> http://pastebin.com/q210vEAs
发布于 2012-05-12 15:39:46
发生了什么事?
确切地说,这条消息是这样写的:有的代码执行了双重自由,有的则执行了堆损坏。
正如awoodland所建议的那样,把python运行在val差下,看看腐败或双重自由在哪里发生。
https://stackoverflow.com/questions/10559791
复制相似问题