概述
在程序中使用非原始类型全局变量,可能会因初始化顺序问题导致软件发生未知错误。
问题
在JsonCfg.cpp
文件中,CJsonCfg
类的构造函数设置了全局变量(std::string
类型)的值,程序中在其他位置声明CJsonCfg
的全局变量,因初始化顺序问题,导致已修改的变量被重新初始化为空。
std::string g_sGUID;
CJsonCfg::CJsonCfg()
{
g_sGUID = MakeGUID();
}
在其他位置声明CJsonCfg
全局变量
疑惑
怀疑并非此问题导致的,但在使用VS2019的变量类型改变触发断点功能测试时测得是此问题。
参考资料
Data Breakpoints – Visual Studio 2017 15.8 Update
注意使用此功能时,需要先确定std::string
分配空间变量的地址,使用此地址作为断点触发值