From 97dde5e30a7d0400cee08d4fa8bf6fd5e760ab9a Mon Sep 17 00:00:00 2001
From: zhangmeng <775834166@qq.com>
Date: 星期四, 19 十二月 2019 16:36:25 +0800
Subject: [PATCH] update

---
 gohumantrack/gohumantrack.go |   21 ++++++++++++---------
 1 files changed, 12 insertions(+), 9 deletions(-)

diff --git a/gohumantrack/gohumantrack.go b/gohumantrack/gohumantrack.go
index 3f9f4f7..d09664b 100644
--- a/gohumantrack/gohumantrack.go
+++ b/gohumantrack/gohumantrack.go
@@ -109,7 +109,6 @@
 	handle    unsafe.Pointer
 	result    unsafe.Pointer
 	batchSize int
-	fakeImage unsafe.Pointer
 }
 
 // NewHumanTracker new
@@ -120,7 +119,7 @@
 	p := C.c_human_tracker_create(C.int(gpu), C.int(batchSize), C.int(flag))
 	if p != nil {
 		res := C.init_fgres(C.int(batchSize))
-		return &HumanTracker{p, res, batchSize, nil}
+		return &HumanTracker{p, res, batchSize}
 	}
 	return nil
 }
@@ -132,9 +131,6 @@
 	}
 	if h.result != nil {
 		C.free(h.result)
-	}
-	if h.fakeImage != nil {
-		C.free(h.fakeImage)
 	}
 }
 
@@ -192,17 +188,24 @@
 		return nil, errors.New("create C images error")
 	}
 	defer C.free(cImgs)
+
+	var freeFakeImage []unsafe.Pointer
+
 	for k, v := range imgs {
 		logo.Infoln("batch~~~~~~", k, " image: ", v)
 		if v == nil {
-			if h.fakeImage == nil {
-				h.fakeImage = C.create_fake_image(C.int(wid * hei * chn))
-			}
-			C.fill_images(cImgs, C.int(h.batchSize), C.int(k), h.fakeImage, C.int(wid), C.int(hei), C.int(chn))
+			fake := C.create_fake_image(C.int(wid * hei * chn))
+			freeFakeImage = append(freeFakeImage, fake)
+			C.fill_images(cImgs, C.int(h.batchSize), C.int(k), fake, C.int(wid), C.int(hei), C.int(chn))
 		} else {
 			C.fill_images(cImgs, C.int(h.batchSize), C.int(k), unsafe.Pointer(&v.Data[0]), C.int(v.Width), C.int(v.Height), C.int(v.Channel))
 		}
 	}
+	defer func(f []unsafe.Pointer) {
+		for _, v := range f {
+			C.free(v)
+		}
+	}(freeFakeImage)
 
 	cRet := C.process(h.handle, cImgs, C.int(h.batchSize), h.result)
 	if cRet != 0 {

--
Gitblit v1.8.0