概述
在程序中使用非原始類型全局變量,可能會因初始化順序問題導致軟件發生未知錯誤。
問題
在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
分配空間變量的地址,使用此地址作爲斷點觸發值