powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / А можно ли как-то проверить память перед обращением во избежание Access violation ?
5 сообщений из 5, страница 1 из 1
А можно ли как-то проверить память перед обращением во избежание Access violation ?
    #39092592
pointer1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Перед завершением потока мне нужно запустить callback-функцию в этом же потоке. Всё работает хорошо. Но если поток завершается во время завершения всей программы, то получаю 0xC0000005: Access violation reading location 0xdddddddd. Т.к. адрес в памяти для функции обратного вызова становится недоступным.
Можно ли как-то перед вызовом каллбак как-то проверить доступность этой области памяти, чтобы не возникала эта ошибка ? Есть какая-нибудь функция типа "IsValidMemory(pointer)" ? Проверять на NULL и nullptr бесполезно. Указатель не пустой.
...
Рейтинг: 0 / 0
А можно ли как-то проверить память перед обращением во избежание Access violation ?
    #39092655
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Читай про SEH .
По-хорошему надо сделать так чтобы функция не вызывалась когда ее уже нет. Т.е. сначала завершаешь тот код, который callback делает, затем все остальное.
...
Рейтинг: 0 / 0
А можно ли как-то проверить память перед обращением во избежание Access violation ?
    #39092706
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pointer1получаю 0xC0000005: Access violation reading location 0xdddddddd. Т.к.
адрес в памяти для функции обратного вызова становится недоступным.
Чтобы это предположение было верным, функция должна находиться в загруженной DLL. Ты лучше
проверь адрес с которого идёт обращение по map-файлу и адрес к которому идёт обращение.
Вероятнее всего ты из этого своего callback-а обращаешься к чему-то уже уничтоженному.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
А можно ли как-то проверить память перед обращением во избежание Access violation ?
    #39092759
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pointer1Можно ли как-то перед вызовом каллбак как-то проверить доступность этой области памяти, чтобы не возникала эта ошибка ?

А толку? Вдруг память уже распределена под другой объект? Программируйте аккуратно. Сокрытие ошибок программирования только усложнит диагностику программы.
...
Рейтинг: 0 / 0
А можно ли как-то проверить память перед обращением во избежание Access violation ?
    #39093057
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pointer1Перед завершением потока мне нужно запустить callback-функцию в этом же потоке. Всё работает хорошо. Но если поток завершается во время завершения всей программы, то получаю 0xC0000005: Access violation reading location 0xdddddddd. Т.к. адрес в памяти для функции обратного вызова становится недоступным.
Можно ли как-то перед вызовом каллбак как-то проверить доступность этой области памяти, чтобы не возникала эта ошибка ? Есть какая-нибудь функция типа "IsValidMemory(pointer)" ? Проверять на NULL и nullptr бесполезно. Указатель не пустой.

Можно.

Есть фунция Win API IsValidPointer или что-то в этом роде.

Можно и самому такую сделать -- попытаться записать и прочитать что-то по этому адресу. Под SEH.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / А можно ли как-то проверить память перед обращением во избежание Access violation ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]