From b5c530373dcf6288da2d3c07bc0117ca3afbf0e3 Mon Sep 17 00:00:00 2001 From: Jiaming Guo Date: Thu, 23 Feb 2017 14:11:01 -0600 Subject: [PATCH] fixed memory leak --- stim/biomodels/flow.h | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/stim/biomodels/flow.h b/stim/biomodels/flow.h index ef05e3d..ec99020 100644 --- a/stim/biomodels/flow.h +++ b/stim/biomodels/flow.h @@ -118,6 +118,22 @@ namespace stim { Q.resize(n_e); } + void reset(unsigned n_v) { + + for (unsigned i = 0; i < n_v; i++) { + for (unsigned j = 0; j < n_v; j++) { + C[i][j] = 0; + } + } + } + + void clear(unsigned n_v) { + + for (unsigned i = 0; i < n_v; i++) + delete[] C[i]; + delete[] C; + } + /// Calculate the inverse of A and store the result in C void inversion(T** A, int order, T* C) { @@ -128,7 +144,6 @@ namespace stim { for (unsigned i = 0; i < order; i++) for (unsigned j = 0; j < order; j++) Aflat[i * order + j] = A[i][j]; - //T* Cflat = C;// (T*)malloc(order * order * sizeof(T)); // create device pointer T* d_Aflat; // flat original matrix @@ -178,12 +193,8 @@ namespace stim { // copy inverse matrix from device to host HANDLE_ERROR(cudaMemcpy(C, d_Cflat, order * order * sizeof(T), cudaMemcpyDeviceToHost)); - //for(unsigned i = 0; i < order; i++) - // memcpy(C[i], &Cflat[i*order], order * sizeof(T*)); - // clear up free(Aflat); - //free(Cflat); HANDLE_ERROR(cudaFree(d_Aflat)); HANDLE_ERROR(cudaFree(d_Cflat)); HANDLE_ERROR(cudaFree(d_A)); -- libgit2 0.21.4