Commit b5c530373dcf6288da2d3c07bc0117ca3afbf0e3

Authored by Jiaming Guo
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));
... ...