milaman 0 Жалоба Опубликовано March 28, 2010 Что есть: CvMemStorage* stor; CvSeq* cont; stor = cvCreateMemStorage(0); cont = cvCreateSeq(CV_SEQ_ELTYPE_POINT, sizeof(CvSeq), sizeof(CvPoint) , stor); Хочу освободить блоки памяти и удалить элементы из последовательности Компиляция происходит успешно cvClearSeq( cont ); // но вот тут призапуске приложения на меня сильно ругаются... cvReleaseMemStorage( &stor ); Для чего мне это надо? Ищу объекты, потом в цикле просматриваю cont. И проверяю определеннные условия. Если объекты не удовлетворяют условиям, то немного правлю изображение и запускаю поиск заново. Вот пред поиском и хочу освободить память и последовательность, чтобы использовать их повторно. Естесвенно после удаления делаю заново cvCreateMemStorage и cvCreateSeq. Может как-то можно это проще сделать? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано March 28, 2010 Что есть: CvMemStorage* stor; CvSeq* cont; stor = cvCreateMemStorage(0); cont = cvCreateSeq(CV_SEQ_ELTYPE_POINT, sizeof(CvSeq), sizeof(CvPoint) , stor); Хочу освободить блоки памяти и удалить элементы из последовательности Компиляция происходит успешно cvClearSeq( cont ); // но вот тут призапуске приложения на меня сильно ругаются... cvReleaseMemStorage( &stor ); Для чего мне это надо? Ищу объекты, потом в цикле просматриваю cont. И проверяю определеннные условия. Если объекты не удовлетворяют условиям, то немного правлю изображение и запускаю поиск заново. Вот пред поиском и хочу освободить память и последовательность, чтобы использовать их повторно. Естесвенно после удаления делаю заново cvCreateMemStorage и cvCreateSeq. Может как-то можно это проще сделать? Видимо что то освобождается дважды . Попробуйте убрать очистку stor. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
milaman 0 Жалоба Опубликовано March 28, 2010 пробовал, менял местами глухо... Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано March 28, 2010 пробовал, менял местами глухо... А на какой строке выкидывает ошибку? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
milaman 0 Жалоба Опубликовано March 28, 2010 при запуске приложения пишет null pointer () in function cvClerSeq, C:\....путь к файлу... (1825) Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано March 28, 2010 при запуске приложения пишет null pointer () in function cvClerSeq, C:\....путь к файлу... (1825) Ну тогда надо поставить так: if(cont!=NULL) {cvClearSeq( cont );} И ошибка должна исчезнуть. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
milaman 0 Жалоба Опубликовано March 29, 2010 хм... ошибка-то исчезла, но не заработало так как надо. Идея такая, чтобы не плодить лишних структур для нескольких поисков хотел использовать одни и теже предварительно очистив их... Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах