Я программирую на Raspberry Pi 3B + с установленной Raspbian OS.
У меня проблемы с этой строкой кода:
clusterPoints.insert(clusterPoints.begin(), cloudPtPointer);
Где clusterPoints - это вектор указателя типа cloudPoint, который я создал, а cloudPtPointer - указатель на cloudPoint, который я хочу вставить. Это моя структура cloudPoint:
struct cloudPoint {
double realHeight;
cv::Point3f point;
cloudPoint* nextPoint;
} ;
Этот код работает не менее 2 недель. Затем я изменил некоторые вещи в другой части проекта, и он начал выдавать мне эту ошибку
"mallo c (): неверный следующий размер (не отсортирован)"
Эта ошибка не возникает в первые 8 раз, когда выполняется строка кода. Я проверил свои переменные, адрес памяти и вектор, и все работает как положено, но я не могу понять, что вызывает повреждение памяти.
РЕДАКТИРОВАТЬ: я не могу вставить свой код, но это строки кода, которые используют / имеют влияние на вектор. Извините за это заранее, но это единственный способ, которым я могу предоставить вам больше информации. Код имеет некоторое время (l oop 4 #) внутри for (l oop # 3) внутри for (l oop # 2) внутри for (l oop # 1). L oop # 2 и # 3 используются для go через 2d карту, а L oop 4 # используется для добавления всех связанных точек к вектору:
std::vector<cloudPoint*> clusterPoints; --> In the beggining of the function
clusterPoints.clear(); --> In the beggining of Loop #1
clusterPoints.insert(clusterPoints.begin(), cloudPtPointer); --> At Loop 3#
clusterPoints.insert(clusterPoints.begin(), connectedPointsSet.begin(), connectedPointsSet.end()); ---> after Loop #4 (inside loop #3).
That connectedPointsSet, является вектором cloudPoints. Чтобы построить этот вектор, я возвращаю набор точек, указывающих на следующую точку, до тех пор, пока ничто не указывает на это.
РЕДАКТИРОВАТЬ 2:
Изменение, вызвавшее ошибку, было в 2 функциях. Мне пришлось изменить заголовки, чтобы тип даты был совместимым. Это старые заголовки:
std::vector<Segmentation::cloudPoint>build2DTo3D(cv::Mat&);
bool transform2GlobalRef(std::vector<cv::Point3f>&);
И это новые:
std::vector<cv::Point3f> build2DTo3D(cv::Mat&);
std::vector<Segmentation::cloudPoint> transform2GlobalRef(std::vector<cv::Point3f>&)