Полный текст ошибки:
Вызвано исключение по адресу 0x0000000077A60EB7 (ntdll.dll) в prog.exe:
0xC0000005: нарушение прав доступа при чтении по адресу 0x000009E2CF156B88
Возникает при выполнении следующей части кода:
PWSTR fr;
/* получаю %USERPROFILE%\Desktop текущего пользователя */
SHGetKnownFolderPath(FOLDERID_Desktop, 0, NULL, &fr);
/* записываю в константу файл который хочу создать в Desktop */
const wchar_t fileName[10] = L"\\file.exe";
unsigned int fileNameLen = 0;
while (fileName[fileNameLen] != NULL) { //узнаю длину названия файла
fileNameLen++;
}
unsigned int frLen = 0;
while (fr[frLen] != NULL) { //узнаю длину пути к Desktop
frLen++;
}
for (unsigned int i = 0; i < fileNameLen; i++) { //конкат fr + fileName
fr[frLen + i] = fileName[i];
}
Вероятнее всего, ошибка в конкатенации. Я так и не понял чем считается символ backslash \\
, потому что при объявлении переменной fileName[10]
он занимает два места (размер переменной 9
вместо 10
поставить не получится, хотя реально знаков в названии 9), но при прибавлении (конкатенации) к fr
в debug отображается как один символ.
Ну вы же сами дали команду:
while (fr[frLen] != NULL) //узнаю длину пути к Desktop
frLen++;
а значит fr[frLen] == NULL
т.е. начиная с этого места вы уже будете выходить за пределы массива, а вы еще хотите читать в fr[frLen + i]
в последнем цикле.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Пишу авторизацию бота на YouTube через свой браузер (WebKit) и столкнулся с такой проблемой: Согласно документации, сервер после авторизации перенаправит...
Есть шаблонная функция, которая должна считать сумму двух значений одного типаКак узнать (с помощью <type_traits>?) возвращаемый тип этой функции,...