簡體   English   中英

我創建鎖定文件的功能導致訪問沖突

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM