全局變量應避免使用非原始類型變量

概述

在程序中使用非原始類型全局變量,可能會因初始化順序問題導致軟件發生未知錯誤。

問題

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分配空間變量的地址,使用此地址作爲斷點觸發值

在這裏插入圖片描述
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章