7 / 7 / 2
Регистрация: 19.06.2013
Сообщений: 174
|
||||||||||||||||
1 | ||||||||||||||||
В цикле ожидания windows message Нарушение прав доступа при чтении "0xfeeeff9a"21.06.2013, 00:54. Показов 1172. Ответов 5
Метки нет Все метки)
(
Пытаюсь разобраться со вторым примером от Microsoft.
Привожу код, который дает сбой:
Вот код функции Render:
Причем g_pd3dDevice в это время пуст (под него не выделено памяти) потому и возникает такая ошибка. И собственно вопрос такой: Почему при постоянном вызове функции Render в цикле, при закрытии окна сразу вылетает ошибка. А если засунуть Render в условие, когда никаких message не было отправлено, то все в порядке? оО Логикой и поэтапным продумыванием понять не удалось...
0
|
|
21.06.2013, 00:54 | |
Ответы с готовыми решениями:
5
"Необработанное исключение в "0x00417c85" в "oui2.exe": 0xC0000005: Нарушение прав доступа при чтении "0x00000000"." Необработанное исключение в "0x00412b4a" в "kursovik.exe": 0xC0000005: Нарушение прав доступа при чтении "0x00000004". Необработанное исключение в "0x00414558" в "467.exe": 0xC0000005: Нарушение прав доступа при чтении "0xabababbb" Необработанное исключение в "0x775e15de" в "laba3.exe": 0xC0000005: Нарушение прав доступа при чтении "0xfdfdfdf9". |
51 / 50 / 14
Регистрация: 17.11.2012
Сообщений: 427
|
|
21.06.2013, 10:42 | 2 |
Не по теме:
Если ты имеешь виду красную точку слева - это точка где остановилась компиляция , бери выше неё , в твоём случае , выше Render();
0
|
7 / 7 / 2
Регистрация: 19.06.2013
Сообщений: 174
|
|
21.06.2013, 10:54 [ТС] | 3 |
Нет, я имею ввиду, что остановка происходит именно из-за ошибки. И я показал где эта ошибка и в чем она заключается.
Вопрос был в том, что если запустить проект и сразу нажать выход из окна, то g_p3dDevice теряет свои данные и не считается полноценной переменной.
0
|
51 / 50 / 14
Регистрация: 17.11.2012
Сообщений: 427
|
|||||||||||
21.06.2013, 10:58 | 4 | ||||||||||
Не знаю почему у тебя не работает , но у меня норм всё , в моём коде.
Почему-бы не использовать LRESULT CALLBACK WndProc ??? Для справки: А вообще PeekMessage проверяет , были ли посланы сообщения , как раз всякие WM_KEYDOWN. Соответственно без else функция Render будет выполняться всегда , не смотря , что есть сообщения. А если функция под else , то она будет работать только тогда , когда нет сообщений. Так что лучше делать под else , если больше не хочешь таких конфликтов.
1
|
7 / 6 / 2
Регистрация: 29.12.2012
Сообщений: 41
|
||||||
21.06.2013, 11:00 | 5 | |||||
1
|
7 / 7 / 2
Регистрация: 19.06.2013
Сообщений: 174
|
|
21.06.2013, 22:00 [ТС] | 6 |
Спасибо за ответы!
Сегодня, после перезагрузки этот странный баг пропал... Хотя, возможно это так же связано с тем, что я в каждом блоке switch после изменений параметров точек треугольников (которые рисует функция Render) еще добавлял функцию ShowWindow. А сейчас я ее убрал. Странно конечно... возможно сбои в программе, которые были до этого что-то испортили в памяти, либо еще какая-то совсем непонятная чертовщина. Большое спасибо BeginerMan и Izaron за советы ![]()
0
|