发现使用std::initializer_list<QString>时,会造成程序崩溃,貌似是堆栈破坏,猜测和QString的数据隐式共享机制有关,但具体原因还未定位,测试代码如下,期待解答:
#include "qstring_initializer_list_test.h"
#include <QtWidgets/QApplication>
#include <vector>
#include <QString>
#include <QStringList>
#define LK_TEACHING_MODE "teaching_mode"
#define LK_VS_MODE "vs_mode"
static QString s_teaching("teaching mode");
static QString s_vs("vs mode");
static QString QStringOfKey(const std::string& key)
{
return key == LK_TEACHING_MODE ? QString("teaching mode") : QString("vs mode");
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
{
//std::initializer_list<QString> container = { s_teaching, s_vs }; // 没问题
//std::init
std::initializer_list<QString> 崩溃问题
最新推荐文章于 2024-04-09 22:39:46 发布