相关疑难解决方法(0)

SWIG和C++内存泄漏与指针向量

我使用SWIG来连接C++和Python.我创建了一个函数,它创建了一个std :: vector对象指针.在这种情况下,指向的对象并不重要.

我遇到的问题是,当object(someObject)超出Python端的范围时,它无法释放向量中对象/指针所指向的内存,从而导致内存泄漏.

当我在Python中运行它时,我收到此错误:

swig/python detected a memory leak of type 'std::vector< someObject *,std::allocator<  someObject * > > *', no destructor found.
Run Code Online (Sandbox Code Playgroud)

这个错误是因为当Python删除向量时,它只能删除向量中的指针而不是它们指向的实际指针.

如果我可以为std :: vector创建一个析构函数,这就是答案,但这是不可能的.

在任何人建议将其作为解决方案之前,我确实需要使用与对象向量相对的指针向量,特别是因为对象很大且复杂,速度是个问题.

我在Windows上使用gcc4.4,swigwin 2.0.4和Python 2.7.

c++ swig python-2.7

22
推荐指数
1
解决办法
6573
查看次数

标签 统计

c++ ×1

python-2.7 ×1

swig ×1