Я встраиваю Perl в приложение C ++, которое использует Smartheap . Независимо от того, собираю ли я perl для использования его собственного malloc или системы, я получаю кучу диалогов об ошибках mem___bad_pointer. Кажется, это работает нормально, когда я просто нажимаю «ОК» и игнорирую ошибки, но, очевидно, мне нужно решить проблему.
Возможно, мне нужно скомпилировать SmartHeap в мою сборку perl? Это вообще возможно?
Ниже единственная документация страница о mem__bad_pointer's, которую я смог найти, но я не приблизился к решению проблемы. Я не понимаю, как и где Perl и Smartheap конфликтуют друг с другом. Любые указатели оценены.
- Указатель был выделен диспетчером памяти, отличным от SmartHeap, например, из другой DLL или EXE или из библиотеки времени выполнения компилятора. Изучите файл своей карты, чтобы увидеть, что версия malloc, _fmalloc / farmalloc или оператора new SmartHeap связана в.
- Указатель является «диким» (неинициализированным), размещается в стеке (локальная переменная) или недопустим.
- Указатель был ранее освобожден. Если SmartHeap освободил страницу, с которой первоначально был выделен указатель, SmartHeap не сможет обнаружить, что это двойное освобождение. Однако SmartHeap сообщит о неверном указателе. Используйте dbgMemDeferFreeing, чтобы поймать этот тип ошибки.
- Указатель увеличивался или уменьшался с момента выделения.
- Для 16-битного x86 указатель был приведен к ближнему указателю после выделения, и в этом случае сегментная часть указателя была потеряна.
- Пул памяти, из которого был выделен указатель, был освобожден или SmartHeap был незарегистрирован в задаче.
- Задача, из которой был выделен указатель, завершена (см. Раздел B.4).