я имел утечку памяти, используя структуру кода, как это (OpenCV с C++):
int i;
while(true){
Mat x = imread("C:/pics"+i+".jpg");
//do something with x
}
После 100 или около того итераций она всегда разбитых, а затем я изменил код для этого:
int i;
while(true){
Mat x = imread("C:/pics"+i+".jpg");
//do something with x
x.refcount = 0;
x.release();
}
Он прекратил сбой и сделал полную итерацию. Но при ручной настройке refcount на 0 вы должны быть уверены, что вам больше не нужен объект. Вероятно, это причина того, что кто-то проголосовал за мой ответ, но я решил проблему, используя этот подход. Так почему бы мне не поделиться этим?
инкапсулировать код внутри какое-то время (правда) {// Цикл} и дайте ему поработать. В то же время, контролируйте свою память с помощью диспетчера задач, чтобы рассуждать о вашей памяти. – William
Существуют специальные инструменты для измерения утечек памяти и других ошибок программирования (с использованием неинициализированных переменных и т. Д.). Взгляните на «valgrind». –