Commit b5c530373dcf6288da2d3c07bc0117ca3afbf0e3
1 parent
91589064
fixed memory leak
Showing
1 changed file
with
16 additions
and
5 deletions
Show diff stats
stim/biomodels/flow.h
... | ... | @@ -118,6 +118,22 @@ namespace stim { |
118 | 118 | Q.resize(n_e); |
119 | 119 | } |
120 | 120 | |
121 | + void reset(unsigned n_v) { | |
122 | + | |
123 | + for (unsigned i = 0; i < n_v; i++) { | |
124 | + for (unsigned j = 0; j < n_v; j++) { | |
125 | + C[i][j] = 0; | |
126 | + } | |
127 | + } | |
128 | + } | |
129 | + | |
130 | + void clear(unsigned n_v) { | |
131 | + | |
132 | + for (unsigned i = 0; i < n_v; i++) | |
133 | + delete[] C[i]; | |
134 | + delete[] C; | |
135 | + } | |
136 | + | |
121 | 137 | /// Calculate the inverse of A and store the result in C |
122 | 138 | void inversion(T** A, int order, T* C) { |
123 | 139 | |
... | ... | @@ -128,7 +144,6 @@ namespace stim { |
128 | 144 | for (unsigned i = 0; i < order; i++) |
129 | 145 | for (unsigned j = 0; j < order; j++) |
130 | 146 | Aflat[i * order + j] = A[i][j]; |
131 | - //T* Cflat = C;// (T*)malloc(order * order * sizeof(T)); | |
132 | 147 | |
133 | 148 | // create device pointer |
134 | 149 | T* d_Aflat; // flat original matrix |
... | ... | @@ -178,12 +193,8 @@ namespace stim { |
178 | 193 | // copy inverse matrix from device to host |
179 | 194 | HANDLE_ERROR(cudaMemcpy(C, d_Cflat, order * order * sizeof(T), cudaMemcpyDeviceToHost)); |
180 | 195 | |
181 | - //for(unsigned i = 0; i < order; i++) | |
182 | - // memcpy(C[i], &Cflat[i*order], order * sizeof(T*)); | |
183 | - | |
184 | 196 | // clear up |
185 | 197 | free(Aflat); |
186 | - //free(Cflat); | |
187 | 198 | HANDLE_ERROR(cudaFree(d_Aflat)); |
188 | 199 | HANDLE_ERROR(cudaFree(d_Cflat)); |
189 | 200 | HANDLE_ERROR(cudaFree(d_A)); | ... | ... |