Странное нарушение прав доступа после добавления библиотеки tinyXML - PullRequest
0 голосов
/ 26 января 2012

Я не настолько знаком с внутренним механизмом C ++, поэтому я совершенно заблудился из-за нарушения прав доступа, с которым я недавно столкнулся.

Я пишу на C ++ в Visual Studio 2008. Мое приложение построено на библиотеке SRILM (инструментарий NLP) и все время прекрасно работает. Однако, когда я недавно пытался включить новые функции и добавил внешнюю библиотеку lib tinyXML в свое решение, возникла странная проблема!

ошибка доступа нарушения была выдана в библиотеке SRILM, где она работала гладко, прежде чем был добавлен tinyXML.

код:

inline void Map_freeKey(const char *key) { free((void *)key); }

Необработанное исключение в 0x77e9e39e в tester.exe: 0xC0000005: Доступ нарушение чтения местоположения 0x4edbe8b7.

и адрес указателя «const char * key» не является ни 0x4edbe8b7, ни 0x77e9e39e, поэтому я предполагаю, что это место должно быть в некотором месте в стеке кода, но я понятия не имею :( И вы можете проверить ниже рисунок для более подробно.

Detail Screenshot for the problem

Эта проблема воспроизводима в том же месте. Кроме того, возникла ошибка «тупика» во время выполнения, когда библиотека boost пыталась скомпилировать регулярное выражение в моем коде. Это так странно, и после удаления новой добавленной библиотеки tinyXML все эти проблемы исчезли.

Я много искал на предмет нарушения прав доступа, но из-за моей проблемы, похоже, возникла ошибка в системном стеке кода, и я не знаю, как ее обработать. Поэтому я задаю этот вопрос, надеюсь получить помощь:

Что вы будете делать, если обнаружите, что внешняя библиотека подверглась такому странному нарушению доступа?

...