Попытка чтения или записи в защищенную память
Попытка чтения или записи в защищенную память
Доброго времени суток, форумчане! Возникла такая проблема — при вызове функции из dll(написана на.
Попытка чтения или записи в защищенную память
Дело в том что у меня Windows 8, при попытке запуска проекта выдает ошибку: "Необработанное.
Попытка чтения или записи в защищенную память
Hello, ребят, такой вопрос. Есть програмка, суть ее — найти часть картинки на другой, ту что ищем.
Попытка чтения или записи в защищенную память из dll на C++
Работаю в Visual Studio 2008. Столкнулся со следующей проблемкой. Допустим, есть dll-ка на C++.
Ошибка: Попытка чтения или записи в защищенную память. Это часто свидетельствует о том, что другая память повреждена
Попытка чтения или записи в защищенную память. Это часто свидетельствует о том, что другая память повреждена.
Написан проект на c# и dll на c++, по отдельности компилируется без ошибок, но когда запускаешь проект, доходит до второй функции (написанной в dll) и выдает эту ошибку.
Это означает что вы пытаетесь писать или читать по адресу памяти, который не принадлежит вашей программе. Например, вы можете писать или читать память за пределами динамически выделенного массива, или обращаться к памяти по null-указателю.
System.AccessViolationException: «Попытка чтения или записи в защищенную память. Это часто свидетельствует о том, что другая память повреждена.»?
Написал пробную dll для создания процесса на с++. Вызываю её в консоли шарпа — вот такая ошибка. Вот коды:
- Вопрос задан более трёх лет назад
- 7461 просмотр
- Вконтакте

И нужно придумать как его
- Вконтакте

D0ct0r_Murder,
cb The size of the structure, in bytes.

D0ct0r_Murder, переносимость.
размер структуры на разных машинах будет разный.
из-за выравнивания в памяти.

1 — для проверки памяти используйте соответствующие тесты 1 и 2
2 — в общем случае, это говорит о том что у вас нарушения адресаций — какой то из подпроцессов залезает в память, которая ему не позволена
Попытка чтения или записи в защищенную память это часто свидетельствует о том что другая память
Попытка чтения или записи в защищенную память. Это часто указывает на то, что другая память повреждена
Я надеюсь, что кто-то может просветить меня, что могло быть причиной этой ошибки:
попытка чтения или записи в защищенную память. Это часто указывает на то, что другая память повреждена.
Я не могу опубликовать код, потому что эта ошибка, похоже, брошена в любой случайной области приложения. Приложение будет работать в любом месте от 12-48 часов до возникновения ошибки. Иногда он останавливается в кажущемся случайным месте и бросает вышеуказанная ошибка, в других случаях все приложение останавливается, и я получаю экран с ошибкой, которая говорит что-то вроде «была фатальная ошибка. Это может быть ошибка в CLR или. «что-то о PInvoke или другой соответствующей информации. Когда это происходит, все потоки отображаются завершенными, и отладочная информация недоступна.
в двух словах это так:
его многопоточное серверное приложение, написанное полностью на C#. Клиенты подключаются к серверу через сокет. Сервер запускает виртуальную» среду » для клиентов, где они могут взаимодействовать друг с другом и средой. Он потребляет довольно много памяти, но я не вижу, чтобы она протекала. Он обычно потребляет около 1,5 ГБ. Я не думаю, что его утечка, потому что использование памяти остается относительно постоянным все время работы приложения. Его постоянно работающий код для поддержания среды, даже если клиенты ничего не делают. Он не использует 3rd party программное обеспечение или другие API. Единственными внешними ресурсами, которые использует это приложение, являются соединения сокетов и подключения к базе данных SQL. Работает на 64-битном сервере. Я попытался отладить это в VS2008 & VS2010 с помощью .net 2.0, 3.5 и 4.0 и на нескольких серверах, и проблема все еще в конечном итоге возникает.
Я попытался отключить оптимизацию компилятора и несколько исправлений microsoft. Ничто, кажется, не заставляет эту проблему уйти. Было бы полезно, если кто-нибудь знает какие-либо возможные причины, или какой-то способ определить, что вызывает проблему.
18 ответов
Я только что столкнулся с этой проблемой в VS 2013 .NET 4.5 с DLL MapInfo. Оказывается, проблема заключалась в том, что я изменил платформу для сборки с x86 на любой процессор, и этого было достаточно, чтобы вызвать эту ошибку. Изменение его обратно на x86 сделало трюк. Может помочь кому-нибудь.
наконец-то отследил это с помощью WinDBG и SOS. Нарушение доступа было вызвано какой-то неизвестной DLL. Оказывается, часть программного обеспечения под названием «NVIDIA Network Manager» вызывала проблемы. Я читал бесчисленное количество раз, как эта проблема может быть вызвана брандмауэрами или антивирусами, ни один из которых я не использую, поэтому я отклонил эту идею. Кроме того, я был в предположении, что это не было окружающей средой, потому что это происходит на более чем 1 сервере с использованием другого оборудования. Получается все машины, на которых я тестировал это, работали под управлением «Nvidia Network Manager». Я считаю, что он устанавливается с остальными драйверами материнской платы.
надеюсь, это поможет кому-то, так как эта проблема мучила мое приложение в течение очень долгого времени.
попробуйте выполнить эту команду
Я также столкнулся с этой проблемой с Visual Studio 2010. Более интересно, что у меня было несколько проектов в моем решении (консольное приложение, приложение WPF, приложение Windows Forms), но он терпел неудачу только тогда, когда я устанавливал проект, который был типа «консольное приложение» как проект запуска (даже для тех, у которых буквально не было кода или каких-либо дополнительных сборок, упомянутых кроме стандартных, которые поставляются с самим шаблоном проекта).
после изменения, наконец помог мне разобраться в проблеме: перейти к свойствам проекта консольного приложения project — > перейти к Debug tab — > перейти к в правой панели -> Регистрация Enable unmanaged code debugging флажок, как показано на снимке ниже. Первопричина того, почему это произошло, мне до сих пор неизвестна. Единственное, что я заметил, было то, что было много обновлений windows, которые были установлены на моей машине прошлой ночью, которые в основном состояли из обновлений office и обновлений ОС (более десятка КБ статьи.)

эта ошибка не должна возникать в управляемом коде. Это может решить проблему:
перейдите в отладчик Visual Studio, чтобы обойти это исключение:
надеюсь, это поможет.
проблема может быть из — за смешанных платформ сборки DLL в проекте. Я. e вы создаете свой проект для любого процессора, но имеете некоторые библиотеки DLL в проекте, уже построенном для платформы x86. Это вызовет случайные сбои из-за различного сопоставления памяти 32-битной и 64-битной архитектуры. Если все библиотеки DLL построены для одной платформы, проблема может быть решена.
У меня была эта проблема недавно, когда я изменил сервер разработки для проекта. Я получал эту ошибку в строке кода, где я объявил новую переменную OracleConnection.
после многих попыток, включая установку исправлений, я попытался изменить ссылки Oracle.DataAccess и система.Данные.OracleClient в проекте, и это сработало!
когда проект перемещается на новую машину, я предлагаю вам обновить все ссылки, добавленные в этот проект.
Я столкнулся и нашел решение этого исключения сегодня. Это произошло, когда я пытался отладить модульный тест (NUnit), который вызвал виртуальный метод в абстрактном классе.
проблема, похоже, связана с установкой .NET 4.5.1.
Я загрузил .NET 4.5.2 и установил (мои проекты по-прежнему ссылаются на .NET 4.5.1), и проблема решена.
Исключение соединения IBMDB2 OLeDB «Попытка чтения или записи в защищенную память. Это часто указывает на то, что другая память повреждена»
Столкнулся с очень странной проблемой при работе ниже программы на целевой платформе x64. он абсолютно нормально работает на x86.
Действия по воспроизведению:
- сервер db2 установлен на удаленном компьютере
- клиент db2 установлен на локальном компьютере
- теперь запустите эту программу (только после изменения целевой платформы AnyCpu на x64). тогда проблема возникает в OleDbCommand.ExecuteReader ();
СТРАННОЕ ПОВЕДЕНИЕ: на платформе x86. эта программа работает нормально.
P.S .: Проверял эту программу. он работает со всеми серверами, такими как SQL, MySQL, Oracle и т. д., проблема только с Сервер IBMDB2
ИЗМЕНИТЕ свой вопрос в уточнить, какую именно версию клиента Db2 вы используете и кто является поставщиком? (MS или IBM) и т. д.
Я использую клиент IBM DB2 11.1 x64bit. Я сталкиваюсь с этой проблемой только тогда, когда меняю целевую платформу на x64 с Visual Studio 2015. Однако она отлично работает с целевой платформой Visual Studio x86.
На каких выпусках Windows x64 он не работает? На каких 32-битных выпусках он работает?
Я запускаю эту программу через Visual Studio 2015 на машине с Windows 2k12 R2 64 бит. проблема возникает только тогда, когда я меняю целевую платформу моей программы на x64. через щелчок правой кнопкой мыши-> программа-> Свойства-> цель платформы. он работает с AnyCpu и x86, но не с x64
Попытка чтения или записи защищенной памяти. Это часто свидетельствует о том, что другая память повреждена
Я надеюсь, кто-то может просветить меня о том, что может вызвать эту ошибку:
Попытка чтения или записи защищенной памяти. Это часто свидетельствует о том, что другая память повреждена.
Я не могу опубликовать код, потому что эта ошибка, похоже, попадает в любую случайную область приложения. Приложение будет запускаться от 12 до 48 часов, прежде чем выбросить ошибку. Иногда он останавливается в кажущемся случайном месте и бросает вышеприведенную ошибку, иногда все приложение останавливается, и я получаю экран с ошибкой, которая говорит что-то вроде строки «Была фатальная ошибка в. Это может быть ошибка в CLR или. » что-то о PInvoke или другой не относящейся к делу информации. Когда это происходит, все потоки прекращаются и недоступна информация для отладки.
Вкратце это то, что делает приложение:
Это многопоточное серверное приложение, написанное полностью на С#. Клиенты подключаются к серверу через сокет. Сервер запускает виртуальную «среду» для клиентов, где они могут взаимодействовать друг с другом и с окружающей средой. Он потребляет довольно много памяти, но я не вижу его утечки. Обычно он потребляет около 1,5 ГБ. Я не думаю, что это утечка, потому что использование памяти остается относительно постоянным все время работы приложения. Его постоянно действующий код для поддержания среды, даже если клиенты ничего не делают. Он не использует стороннее программное обеспечение или другие API. Единственными внешними ресурсами, которые использует это приложение, являются соединения сокетов и соединения базы данных SQL. Он работает на 64-битном сервере. Я попытался отладить это в VS2008 и VS2010 с использованием .net 2.0, 3.5 и 4.0 и на нескольких серверах, и проблема все еще в конечном итоге возникает.
Я попытался отключить оптимизацию компилятора и несколько горячих исправлений для Microsoft. Ничто, похоже, не устраняет эту проблему. Было бы хорошо, если кто-нибудь знает какие-либо возможные причины или какой-то способ определить, что вызывает проблему.