Я использую библиотеку CGAL для триангуляции трехмерного облака точек. Иногда приложение работает нормально, но в большинстве случаев оно зависает. Он входит в бесконечный цикл при вставке новой трехмерной точки в триангуляцию. Эта проблема у меня возникает только в Windows, в Linux она всегда работает нормально. Я использую CGAL 4.6 x64 с ядром Exact_predicates_inexact_constructions_kernel с Visual Studio 2012/2015 в Windows 8.1 x64 и GCC в Ubuntu 14.04 x64.
Любые предложения о том, как исправить эту проблему в сборке Windows?
ОБНОВЛЕНИЕ. Перейдите по этой ссылке, чтобы найти минимальный код для воспроизведения проблемы и пример набора данных: https://drive.google.com/file/d/0B8bb0qT4PvT8V2hqUEt0RUstLTg Проблема, по-видимому, заключается в оптимизированной процедуре поиска ближайшей точки и вставки новой точки (две части кода, выбранные перед компиляцией, эквивалентны, но второй оптимизирован двумя способами: использовать только один locate() вместо двух и не выделять/использовать std::vector для каждой точки).
/fp:strict
, и вы можете добавить/fp:except-
, чтобы немного ослабить строгость. Редактировать: я видел вашCMakeLists.txt
, и я уверен, что это может быть причиной сбоя. Я, вероятно, должен продвигать этот комментарий к официальному ответу. - person lrineau   schedule 11.06.2015