我在Visual Studio 2013上編寫C++ dll。我的dll應該從ini文件讀取參數。所以,我爲此創建了一個函數(ReadConnectionSettings())。在函數工作期間,我的靜態變量serverIP正確地獲取了值,但是一旦完成運行變量(serverIP)的函數失去了它的值。什麼似乎是問題?靜態LPTSTR變量在函數執行後丟失數值
static LPTSTR serverIP = _TEXT("");
void ReadConnectionSettings()
{
TCHAR url[256];
GetPrivateProfileString(_T("Connection"), _T("Url"), _T(""), url, 256, NameOfIniFile);
serverIP = url;
}
'url'被分配到堆棧上,並在方法結束時隨後被吹走。如果您需要更多的永久存儲空間,則需要更長久的存儲位置。 – dlev
'url'是一個本地分配的變量,因此它在ReadConnectionSettings返回後釋放,因此serverIP指向釋放內存。嘗試:'serverIP = _tcsdup(url);'祝你好運,當你完成它時,不要忘記釋放你的記憶! –