У меня проблема, которая, по-видимому, является недопустимым блоком памяти, который происходит во время вызова Boost для Boost:runtime:cla::parser::~parser
.Когда это глобальное удаление вызывается для этого объекта, C ++ утверждает в блоке памяти как недействительный:
dbgdel.cpp(52):
/* verify block type */
_ASSERTE(_BLOCK_TYPE_IS_VALID(pHead->nBlockUse));
Исследование, которое я провел, выявило, что проблема произошла из-за глобальной перегрузки операторов new / delete.Эти перегрузки помещены в отдельную DLL.Я обнаружил, что проблема возникает только тогда, когда эта DLL компилируется в RELEASE, в то время как основное приложение компилируется в DEBUG.
Поэтому я подумал, что варианты сборки Release / Debug могли создать такую проблему в Boost / CRTпри перегрузке новых / удаленных операторов.Поэтому я попытался явно вызвать _malloc_dbg и _free_dbg без перегрузки функций даже в режиме выпуска, но это не решило проблему с недопустимым блоком кучи.
Есть идеи, что является основной причиной проблемы?разрешима ли эта ситуация?
Я должен подчеркнуть, что проблема началась только тогда, когда я начал использовать Boost.До этого ЭЛТ никогда не жаловался на недопустимый блок памяти.Так может ли это быть внутренняя ошибка Boost?
Спасибо!