Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
А можно ли как-то проверить память перед обращением во избежание Access violation ?
|
|||
|---|---|---|---|
|
#18+
Перед завершением потока мне нужно запустить callback-функцию в этом же потоке. Всё работает хорошо. Но если поток завершается во время завершения всей программы, то получаю 0xC0000005: Access violation reading location 0xdddddddd. Т.к. адрес в памяти для функции обратного вызова становится недоступным. Можно ли как-то перед вызовом каллбак как-то проверить доступность этой области памяти, чтобы не возникала эта ошибка ? Есть какая-нибудь функция типа "IsValidMemory(pointer)" ? Проверять на NULL и nullptr бесполезно. Указатель не пустой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2015, 12:32 |
|
||
|
А можно ли как-то проверить память перед обращением во избежание Access violation ?
|
|||
|---|---|---|---|
|
#18+
Читай про SEH . По-хорошему надо сделать так чтобы функция не вызывалась когда ее уже нет. Т.е. сначала завершаешь тот код, который callback делает, затем все остальное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2015, 13:05 |
|
||
|
А можно ли как-то проверить память перед обращением во избежание Access violation ?
|
|||
|---|---|---|---|
|
#18+
pointer1получаю 0xC0000005: Access violation reading location 0xdddddddd. Т.к. адрес в памяти для функции обратного вызова становится недоступным. Чтобы это предположение было верным, функция должна находиться в загруженной DLL. Ты лучше проверь адрес с которого идёт обращение по map-файлу и адрес к которому идёт обращение. Вероятнее всего ты из этого своего callback-а обращаешься к чему-то уже уничтоженному. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2015, 13:42 |
|
||
|
А можно ли как-то проверить память перед обращением во избежание Access violation ?
|
|||
|---|---|---|---|
|
#18+
pointer1Можно ли как-то перед вызовом каллбак как-то проверить доступность этой области памяти, чтобы не возникала эта ошибка ? А толку? Вдруг память уже распределена под другой объект? Программируйте аккуратно. Сокрытие ошибок программирования только усложнит диагностику программы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2015, 14:15 |
|
||
|
А можно ли как-то проверить память перед обращением во избежание Access violation ?
|
|||
|---|---|---|---|
|
#18+
pointer1Перед завершением потока мне нужно запустить callback-функцию в этом же потоке. Всё работает хорошо. Но если поток завершается во время завершения всей программы, то получаю 0xC0000005: Access violation reading location 0xdddddddd. Т.к. адрес в памяти для функции обратного вызова становится недоступным. Можно ли как-то перед вызовом каллбак как-то проверить доступность этой области памяти, чтобы не возникала эта ошибка ? Есть какая-нибудь функция типа "IsValidMemory(pointer)" ? Проверять на NULL и nullptr бесполезно. Указатель не пустой. Можно. Есть фунция Win API IsValidPointer или что-то в этом роде. Можно и самому такую сделать -- попытаться записать и прочитать что-то по этому адресу. Под SEH. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2015, 17:46 |
|
||
|
|

start [/forum/topic.php?fid=57&fpage=42&tid=2018774]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
50ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
2ms |
| others: | 259ms |
| total: | 403ms |

| 0 / 0 |
