[英]My function to create a lock file causes Access Violation
我已經編寫了在給定目錄中創建文本文件並將其寫入當前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();
}
在這些行中,您破壞了堆:
_TCHAR* lock = folderLocation.c_str();
_tcscat(lock,_T("Lock.txt"));
而是,請執行以下操作:
std::stringstream str; // or wstringstream
str << folderLocation << "Lock.txt"; // or L"Lock.txt"
std::string lock = str.str(); // or wstring
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.