0
我寫了一個函數來創建在指定目錄下的文本文件,並寫入當前的ProcessID它我的函數來創建一個鎖定文件會導致訪問衝突
的函數被調用時點擊了確定按鈕時對話框,它似乎做我想要的,但是當我調用它時,應用程序在對話框關閉時崩潰。 (如果我刪除我的功能,它會關閉沒有麻煩)。
這是我有:
void LockFolder(UnicodeString folderLocation)
{
DWORD processID = GetCurrentProcessId();
_TCHAR currentProcessID[sizeof(DWORD)];
_TCHAR* lockID;
_TCHAR* lock = folderLocation.c_str();
fstream lockFile;
_stprintf(currentProcessID,_T("%i"),processID);
_tcscat(lock,_T("Lock.txt"));
lockFile.open(lock,ios::out);
lockFile<<currentProcessID;
lockFile.close();
}
做出了一些改變,但問題仍然存在, 版本2:
void LockFolder(UnicodeString folderLocation)
{
DWORD processID = GetCurrentProcessId();
_TCHAR* lock = folderLocation.c_str();
_tcscat(lock,_T("Lock.txt"));
fstream lockFile;
lockFile.open(lock,ios::out);
lockFile<<processID<<"\0";
lockFile.close();
}
什麼是'folderLocation'?如果它是std :: wstring,則不能將其c_str()結果指定爲wchar_t *,因爲它應該是const wchar_t *,然後不能將其用作_tcscat輸出緩衝區! – 2012-07-10 17:18:14
既不會輸出一個字符串數組,也不是空終止的,因爲它衰減到一個指針並被解釋爲一個C字符串。 – 2012-07-10 17:20:54
該字符串現在是空終止,文本文件似乎正在寫好,但我仍然得到崩潰:s – 2012-07-10 17:28:10