Он всегда работал нормально, и я мог легко найти утечки памяти, выполнив несколько тестов в своем приложении и затем проверив отчет.
Но после статического связывания OpenCV 3.0 с моим проектом я получил несколько ложных срабатываний.
Например, самая неприятная ошибка возникает из-за метода StereoBMImpl::compute и вызова: ocl::useOpenCL()
После отладки я нашел источник «утечки»:
Код: Выделить всё
TLSData& getCoreTlsData()
{
static TLSData *value = new TLSData();
return *value;
}
Код: Выделить всё
{1370349} normal block at 0x0E74D560, 24 bytes long.
Data: < > FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00
{1370348} normal block at 0x0E74D4E0, 64 bytes long.
Data: 60 D5 74 0E CD CD CD CD CD CD CD CD CD CD CD CD
Есть ли способ удалить эти «псевдо» ошибки (если возможно, не меняя исходный код OpenCV)? Это очень раздражает.
Я полагаю, что другие детекторы утечек памяти также будут сообщать о некоторых подобных псевдоутечках, поскольку оператор new выполняется без удаления (объект автоматически очищается ОС).
Подробнее здесь: https://stackoverflow.com/questions/328 ... e-positive
Мобильная версия