C++ 这可能是Qt';什么是SQL数据库类?
我遇到了这个问题中提到的一个问题: 在我做了一些研究并询问了我的一些朋友之后。我发现 QSqlDatabase可能是问题所在 事情是这样的: QSQLDABASE的默认构造函数使用了一个共享的null。 请注意,shared_null是一个表示无效数据库的对象,而不是一个普通的null指针 代码如下: 您可以在函数中看到这些是静态变量,并且-静态变量初始化不是线程安全的 见: 因此,如果您在不同的线程中调用这些默认构造函数,可能会有问题,在我的例子中,我怀疑由于这种争用条件,shared_null被初始化了两次。结果,ref计数出错,对这个静态对象调用了delete(不应该是可删除的)C++ 这可能是Qt';什么是SQL数据库类?,c++,multithreading,qt,qtsql,C++,Multithreading,Qt,Qtsql,我遇到了这个问题中提到的一个问题: 在我做了一些研究并询问了我的一些朋友之后。我发现 QSqlDatabase可能是问题所在 事情是这样的: QSQLDABASE的默认构造函数使用了一个共享的null。 请注意,shared_null是一个表示无效数据库的对象,而不是一个普通的null指针 代码如下: 您可以在函数中看到这些是静态变量,并且-静态变量初始化不是线程安全的 见: 因此,如果您在不同的线程中调用这些默认构造函数,可能会有问题,在我的例子中,我怀疑由于这种争用条件,shared_nu
我是Qt的新手,有人对此有什么好主意吗 静态变量初始化在C++0x1中是线程安全的如果您的代码没有处理线程锁定,是的,这在C++03中不是线程安全的,并且您不能假设您的客户将如何编译您的代码…但问题是,我使用的是Qt的预构建库…如果是这种情况,为什么它仍然发生?因为从我掌握的所有证据来看,它指向了这个答案。