Всем привет,
В DLL библиотеки есть интерфейс:
// core.h
struct type
{
virtual ~type() { }
virtual std::wstring get_name() const = 0;
};
boost::shared_ptr<type> __declspec(dllexport) create_type(const std::wstring& name);
Имплементация:
// core.cpp
namespace
{
class type_impl : public type
{
wstring m_name; // should be unique for connector
public:
explicit type_impl(const wstring& name): m_name(name){}
virtual wstring get_name() const{ return m_name; }
};
}
boost::shared_ptr<type> create_type(const wstring& name);
Я использую статически эту DLL из другой DLL, где создаю типы с помощью метода create_type.
При этом в релизе происходит падение при освобождении памяти. Точно по стеку понять где не получается, но если закомментировать код с вызовом create_type, то падения нет.
Самое удивительное что дебаг версия работает без проблем.
Что тут не так?