EDIT (спасибо Barry в комментариях) Мне нужно скопировать индексы поиска FLANN, чтобы использовать их в векторе, но он создает нарушение прав доступа, когда количество копий изменяется. Минимальный код, который врезается является:Destructor of flann :: Index after copy constructor производит нарушение прав доступа
#include<flann\flann.hpp>
#include<vector>
const int samplesize=10;
const int dimension=3;
int main(int argc, char* argv[])
{
//fill a pointer to doubles with whatever
double * data=new double[samplesize*dimension];
for(int i=0; i<samplesize*dimension; ++i)
{
data[i]=1;
}
// make a FLANN search index from that data
flann::Matrix<double> datamat(data,samplesize,dimension);
flann::Index<flann::L2<double> > ind(datamat, flann::KDTreeIndexParams(4));
flann::Index<flann::L2<double> > ind2(ind);
return 0;
}
Я был бы признателен, если кто-нибудь может сказать мне, как остановить этот
Я не знаком с 'flann :: Index', но проблема в том, что у вас есть две копии' ind' get уничтожены? Если вы замените вектор только 'flann :: Index <...> ind2 (ind);', вы все равно получите двойное удаление? – Barry
@Barry ah yes 'flann :: Index> ind2 (ind);' делает ту же ошибку. Также он вызывает std :: ~ vector, который объясняет, почему исходный код шел туда дважды. Я отредактирую вопрос –
MatthewJohnHeath
Не могли бы вы снова изменить вопрос, чтобы показать, что проблема _now_? (О, и название, чтобы сохранить его связным :)) – JBL