Я создаю синглетный класс и хочу добавить внутрь объекта PGconn.
Этот класс в прошлом обеспечивал соединения с БД.
// postgresql
#include <libpq-fe.h>
//==============================================================================
class TestST
{
public:
static TestST& getInstance()
{
static TestST test;
return test;
}
bool createConnection()
{
mConn.reset( PQsetdbLogin("localhost", "5432", NULL, NULL,
"test_db", "user_app",
"passwd"),
&PQfinish); // [SIGSEGV when delete] passing a reference to the destroy function
return true;
}
private:
TestST()
{
}
private:
std::shared_ptr<PGconn> mConn; // smart pointer to postgres connetion object
};
//==============================================================================
int main(int argc, char** argv)
{
TestST::getInstance().createConnection(); // create singletone and connection
return 0;
}
//==============================================================================
Когда синглетон удален, функция PQfinish вызывает сигнал Сегментация сбой.
Если я перенес инициализацию mConn в конструктор - это работа.
Если я собираю и запускаю на Windows (MSVC) - это работает.
postgres версия 9.6.9; ОС - Debian 9; gcc версия 6.3.0