мой код на C ++ работает пару раз подряд, и после нескольких выполнений он внезапно перестает работать и выдает исключения (без каких-либо изменений!), И я не могу понять, почему.
Это проблемная частькод:
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
ZeroMemory(&pi, sizeof(pi));
TCHAR *path;
SHGetKnownFolderPath(FOLDERID_Startup, KF_FLAG_CREATE, NULL, &path);
lstrcat(path, L"\\calc.exe");
if (CreateProcess(NULL, path, NULL, NULL, TRUE, 0, NULL, NULL, &si, &pi))
{
WaitForSingleObject(pi.hProcess, INFINITE);
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
}
После нескольких выполнений в строке CreateProcess () выдается 2 исключения: первое:
Unhandled exception at 0x779D8829 (ntdll.dll) in PS_Down.exe: 0xC0000374: A heap has been corrupted (parameters: 0x77A15890).
второе:
Exception thrown at 0x77946111 (ntdll.dll) in PS_Down.exe: 0xC0000005: Access violation reading location 0x00000069.
Это случилось со мной с несколькими другими проектами (которые не включают функцию CreateProcess ()), и я заметил, что это всегда происходит, когда задействованы TCHAR и SHGetKnownFolderPath ().Любая помощь с пониманием того, как решить проблему, будет высоко оценена, спасибо заранее!
PS - Я новичок в кодировании в cpp, поэтому, пожалуйста, попробуйте объяснить соответственно