我在C++中有一些Base
類。我使用boost :: python將它導出到python中。但是虛擬析構函數呢?任何基類應該有虛擬析構函數來避免錯誤的內存釋放,對吧?我忘記了這一點,並寫了Base
沒有析構函數。一切正常,但有很多內存泄漏。析構函數和python
現在我補充說:
class Base
{
public:
virtual ~Base();
// Other members...
};
和導入我的Python模塊後,我得到一個錯誤:
ImportError: Base.so: undefined symbol: _ZTI6Base
我做錯了嗎?而且,據我所知,由於缺少py-module的析構函數導出器導致錯誤。
@Ockonal: '每個基類應該有虛擬析構函數'是不正確的,除非你的基類是'polymorphic' – 2011-04-11 15:08:08
@Okonal:你確定你已經將析構函數導出到導入庫嗎?你確定你實現了這個功能嗎? – 2011-04-11 15:09:11
@als無法理解你:('polymorphic'是什麼意思? – Ockonal 2011-04-11 15:13:02