Когда я пытаюсь получить доступ к этому конкретному указателю, приложение аварийно завершает работу и показывает ошибку нарушения доступа c0000005.Сбой при нарушении доступа к C++
Как я могу уловить эту ошибку и не закрывать ее, как я бы в C# с помощью try catch &. Или как я могу проверить, запрещен ли доступ к этой области памяти, прежде чем использовать ее?
Пример:
MyClass** a = (MyClass**)(0x12345678);
a[0]->b = 1;
Я доступ к таблице указателей и установив значение одного из членов класса. Это работает, но проблема в том, что «0x12345678» не всегда имеет классы, загруженные в эту область. Адрес имеет значение, но он не указывает на правильную область памяти и не удерживает значение 0.
Имейте в виду, что это DLL, загружаемая в приложение, которое я больше не есть источник для. Итак, я пытаюсь установить параметры приложения динамически.
* Поэтому я пытаюсь установить параметры приложения динамически. * Используйте Tools -> Options -> Settings вместо случайного ввода в память? –
Не делайте этого. –
: T они не являются параметрами, которые я позволяю пользователю изменять. Это в основном обновление одного из моих старых приложений. Редактирование: я не случайно записываю в память, я отменил базовую структуру классов, которые я использовал, и я получил настройку для изменения. Проблема в том, что указатель класса настроек иногда содержит значение мусора, указывающее на область, к которой у меня нет доступа. @Seth Carnegie Тогда что бы вы порекомендовали, чтобы получить правильные результаты. – John