Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
4 / 4 / 6
Регистрация: 07.01.2013
Сообщений: 136
1

Swprintf - Unhandled page fault on read Access

05.06.2014, 13:48. Просмотров 674. Ответов 8
Метки нет (Все метки)

Из-за некоторых проблем, возникающих только под windows (см. предыдущую тему), пришлось использовать для windows тип wchar_t (строки wchar_t*).
Проблема в следующем: нужно записать в буфер (wchar_t *buf = calloc(wcslen(wtexpath) + wcslen(d_name) + 1, sizeof(wchar_t))) содержимое строк wtexpath и d_name. По аналогии обычными char* строками, которые для остальных систем соединяются sprintf'ом, пытался соединить с помощью swprintf. Результат - Unhandled page fault on read access <какой-то адрес> to <ещё какой-то адрес>.
Вызов swprintf:
C
1
swprintf(buf, wcslen(wtexpath) + wcslen(d_name), L"%ls%ls", wtexpath, d_name);
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.06.2014, 13:48
Ответы с готовыми решениями:

Перегрузка assing operator. Unhandled exception at 0x103157aa (msvcr100d.dll) in 1exColonSynt_withColonSynt.exe: 0xC0000005: Access violation read
Значит есть линия (класс Line ) , которая состоит из точек (Class Point). Хочется Одной линии...

Ошибка вида "Unhandled exception thrown: read access violation"
Использую парсер tinyXML2. Программа собирается в режиме Debug. При запуске ее из студии - все...

Page fault or other explain
В общем имеется программа которая через буффер считывает файл и передает его в stdout из...

Page-fault-in-nonpaged-area
Доброго времени суток! При загрузки фотографий в вк(бпросто прикрепление к сообщению) появляется...

8
4 / 4 / 6
Регистрация: 07.01.2013
Сообщений: 136
08.06.2014, 22:59  [ТС] 2
Временно заменено на пару wcscat'ов. Есть другие решения?
0
Ушел с форума
Эксперт С++
16291 / 7357 / 1183
Регистрация: 02.05.2013
Сообщений: 11,637
Записей в блоге: 1
08.06.2014, 23:26 3
Цитата Сообщение от k1-801 Посмотреть сообщение
По аналогии обычными char* строками, которые для остальных систем соединяются sprintf'ом, пытался соединить с помощью swprintf. Результат - Unhandled page fault on read access <какой-то адрес> to <ещё какой-то адрес>.
Я бы для начала проверил, где именно происходит fault - на swprintf или на wcslen.
Или вообще где-то в другом месте. Код-то правильный, только надо одно
дополнительное место для символа:

swprintf(buf, wcslen(wtexpath) + wcslen(d_name) +1, L"%ls%ls", wtexpath, d_name);
0
4 / 4 / 6
Регистрация: 07.01.2013
Сообщений: 136
09.06.2014, 12:04  [ТС] 4
Цитата Сообщение от Убежденный Посмотреть сообщение
одно
дополнительное место для символа:
Да хоть десять дополнительных - упадёт.
wcslen работает, выводил printf'ом.
0
Ушел с форума
Эксперт С++
16291 / 7357 / 1183
Регистрация: 02.05.2013
Сообщений: 11,637
Записей в блоге: 1
09.06.2014, 19:10 5
Цитата Сообщение от k1-801 Посмотреть сообщение
Да хоть десять дополнительных - упадёт.
Не верю !
Приведите минимальный код, воспроизволящий проблему.
0
4 / 4 / 6
Регистрация: 07.01.2013
Сообщений: 136
10.06.2014, 14:41  [ТС] 6
Цитата Сообщение от Убежденный Посмотреть сообщение
Приведите минимальный код, воспроизволящий проблему.
Вот это несколько проблематично: ошибка возникает при компиляции MinGW от (и из) кодблокса под вайном. При компиляции обычным gcc этот участок не подключается, хотя если подключить (исключив оттуда сугубо windowsские функции) - проходит.

Добавлено через 2 часа 56 минут
Сделал буфер больше на 20 символов, размер буфера предоставляемый swprintf'у на 10, хоть бы что-то изменилось.
0
Ушел с форума
Эксперт С++
16291 / 7357 / 1183
Регистрация: 02.05.2013
Сообщений: 11,637
Записей в блоге: 1
10.06.2014, 18:57 7
Цитата Сообщение от k1-801 Посмотреть сообщение
Вот это несколько проблематично: ошибка возникает при компиляции MinGW от (и из) кодблокса под вайном. При компиляции обычным gcc этот участок не подключается, хотя если подключить (исключив оттуда сугубо windowsские функции) - проходит.
А как на счет запустить exe под отладчиком, дойти до того места, где
падает, вплоть до машинных команд, и выяснить, в чем там дело ?
0
4 / 4 / 6
Регистрация: 07.01.2013
Сообщений: 136
10.06.2014, 19:26  [ТС] 8
Цитата Сообщение от Убежденный Посмотреть сообщение
А как на счет запустить exe под отладчиком, дойти до того места, где
падает, вплоть до машинных команд, и выяснить, в чем там дело ?
Если бы всё было так просто.
Не работает отладчик под вайном. Никак.
0
Ушел с форума
Эксперт С++
16291 / 7357 / 1183
Регистрация: 02.05.2013
Сообщений: 11,637
Записей в блоге: 1
10.06.2014, 19:31 9
Ну тогда так: SetUnhandledExceptionFilter, определить свой обработчик.
Когда упадет, обработчик будет вызван. В нем сделать крэш-дамп через
MiniDumpWriteDump, а затем открыть этот дамп в WinDbg на другом компе,
где есть Windows. Если и этого сделать нельзя, тогда я пас
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.06.2014, 19:31

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

============PAGE FAULT===========" что это?
Добрый вечер. Постараюсь вкратце описать возникающую проблему: не так давно я перезагрузил...

Ошибка «PAGE FAULT IN NON PAGED AREA»
Здравствуйте у меня такая ошибка уже 2 раз вообщем в первый раз я просто переустановил винду но вот...

Проблема: Page fault in non paged area
Доброго времени суток, форумчане. Приключилась со мной печальная ситуация, но все по порядку. У...

Синий экран page fault in nonpaged area
Добрый вечер! Нужна помощь ваша. Даже не знаю ... что здесь. Постоянно вылетает &quot;Синий экран&quot;(но...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.