особенности освобождения памяти объекта AcDbVoidPtrArray

Автор Тема: особенности освобождения памяти объекта AcDbVoidPtrArray  (Прочитано 4243 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн vsoroka750Автор темы

  • ADN OPEN
  • Сообщений: 7
  • Карма: 0
Здравствуйте.
При использовании команды разбиения полилинии AcDbPolyline::getSplitCurves предварительно требуется создать массив указателей AcDbVoidPtrArray, с помощью которого будет осуществляться доступ к новым кривым.
Проблема возникает, когда объект AcDbVoidPtrArray выходит из области видимости и вызывается его деструктор. Освобождение памяти заканчивается обращением к неправильному адресу. Пробовал разные варианты манипулирования с новыми кривыми (записывать в BlockTable чертежа, закрывать их close()-ом) - не помогает. Но! Ошибка возникает только для конфигурации проекта Debug, для Release ошибки нет. Как будто getSplitCurves при создании кривых вызывает не new_Debug, а просто new или что-то типа того. Это догадка.
Либо у меня что-то не настроено в проекте. Я использую Visual Studio 2019 с набором v141 (для VS2017).
Если знакомы с проблемой, прошу откликнуться. Спасибо.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Как будто getSplitCurves при создании кривых вызывает не new_Debug, а просто new или что-то типа того.
Именно так он и делает. Ты линкуешь с Release библиотеками ObjectARX.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн vsoroka750Автор темы

  • ADN OPEN
  • Сообщений: 7
  • Карма: 0
Александр, спасибо за ответ!
Проект настроен на использование .lib файлов из каталогов ObjectArx2019. Правильно ли я понял, что все библиотечные функции - Release и никогда не вызывают new_Debug? Или я линкуюсь не к тому, что-то не указываю в настройках?

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Правильно ли я понял, что все библиотечные функции - Release и никогда не вызывают new_Debug?
Правильно понимаешь.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
vsoroka750,
Оптимальным вариантом было бы использовать ObjectARX Wizard 2019 - в нем все настроено.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн vsoroka750Автор темы

  • ADN OPEN
  • Сообщений: 7
  • Карма: 0
Александр, большое Вам спасибо!