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