Я не могу напрямую воспроизвести вашу проблему без MCVE, и я сам не знаю резюме. Но я могу сделать некоторые предположения, которые могли бы помочь.
Ошибка времени выполнения: «Неверная контрольная сумма для освобожденного объекта ...: возможно, изменена после освобождения.»
Первый совет, который вам дает, заключается в том, что такие проверки кучи обычно выполняются только тогда, когда выполняются операции с кучей, а не когда происходит повреждение. В вашем коде нет явных операций с кучей (например, new
или delete
). Использование кучи здесь происходит из хорошо документированных и хорошо протестированных структур данных из стандартной библиотеки (vector
) и cv (Mat
).
Второй намек - probably modified after being freed
, но он неполный - другая возможность - это написание некоторого кода за его пределами - либо переполнение буфера, либо неправильная индексация массива, либо что-то в этом роде.
И этот последний бит приводит нас к документации по CV для класса Mat, в которой нигде не упоминается, что происходит, если вы плохо проиндексировали Mat. имеет предупреждения о том, что вы используете правильный тип элемента, иначе все может пойти не так. И эти вещи вместе могут быть очень сильным намеком на то, что, если вы получите доступ к Мату неправильно, могут произойти плохие вещи. Например, если вы пишете, возможно, повреждение памяти.
Все вместе, вместе с моим комментарием выше о том, что вы объявляете переменные h
и w
, но не используете их - и что именно, по вашему мнению, вы должны использовать h
и w
для - должно: Вам предстоит долгий путь к выяснению того, как куча была повреждена, до такой степени, что система времени выполнения жалуется на это.
Оповещение о спойлере (для получения наилучших результатов только чтение после вы решили проблему):