Предположим, что img является 3-канальным матом в коде.Утечка памяти с кодом.Я предполагаю, что указатели (ссылки) в срезе "matsplits" не удаляются при сборке мусора в go.Как я могу это исправить?
for{
matsplits := gocv.Split(img)
matsplits[0].Close()
matsplits[1].Close()
matsplits[2].Close()
}
Вид приведенных выше кодов вызывает утечку памяти.Я уверен, что объекты Mat в imgarr закрыты, но использование памяти все еще растет.Почему?
Обновление: часть кодов в моем проекте
processed := 0
for processed < proc.imgNumber {
grayhconcatImg := <-proc.processedImg[0][chindex]
var roiList roilist
var numStartPosList numStartPos
for x := 0; x < 11520-w; x++ {
test := gocv.NewMat()
testRegion := grayhconcatImg.img.Region(image.Rect(x, 0, x+w, h))
gocv.BitwiseXor(chimg, testRegion, &test)
testRegion.Close()
//testsplit := gocv.Split(test)
test.Close()
//testsplit[0].Close()
//testsplit[1].Close()
processed++
}
Утечка памяти происходит, если «testplit» не помечены.len (testsplit) равен 2. Я проверил, что testsplit [0] и testsplit [1] были закрыты правильно после testsplit [i] .Close ().