2010-10-08 94 views
0

有誰點時,可以在下面的賽格故障出現,如下圖所示: - 堆腐敗 - 內存泄漏 - 缺陷的STL實現字符串STL相關seg錯誤在C++ std :: string?

0xf0f1d672 in std::__default_alloc_template<true, 0>::allocate(unsigned int)() from /usr/lib/libstdc++.so.5 

的給予一定的情況下,堆棧跟蹤是如下:

#0 0xf0f1d672 in std::__default_alloc_template<true, 0>::allocate(unsigned int)() from /usr/lib/libstdc++.so.5 
#1 0xf10bdae1 in std::__simple_alloc<std::_Rb_tree_node<std::pair<std::string const, Calculator*> >, std::__default_alloc_template<true, 0> >::allocate(unsigned int)() from /export/work/install/lib/Plugin.so 
+1

這並不是太多的堆棧跟蹤...並沒有太多的問題要麼... – 2010-10-08 07:38:05

+2

「STL實現字符串中的缺陷」是的,STL被稱爲提供未經測試的,錯誤的和設計錯誤的類。它不可信。 – ereOn 2010-10-08 07:56:56

+0

@ereOn:大膽使用嘲諷的+1。 – bjoernz 2010-11-29 12:18:54

回答

2

從您的堆棧跟蹤,似乎你正在創建一個動態加載.so插件。如果插件接口使用堆分配,則通常必須確保在插件API邊界的兩側都使用相同的運行時庫實例。

+0

感謝Greg ..這裏的模型是二進制文件中有單獨的對象,每個對象都有一個插件的實例。現在,是的插件實例是單線程的,並且沒有堆分配。 – Beny 2010-10-08 08:05:16