diff --git a/src/cache.h b/src/cache.h index 8c13588c6c6061d0e071bec64567cf7b822f7c2f..1ca245b5a56d9bbddd1b3411f9fa2c4a0658e324 100644 --- a/src/cache.h +++ b/src/cache.h @@ -74,6 +74,18 @@ __attribute__((always_inline)) INLINE void cache_init(struct cache *c, size_t co unsigned int sizeBytes = (count + (2 * VEC_SIZE)) * sizeof(float); int error = 0; + /* Free memory if cache has already been allocated. */ + if (c->count > 0) { + free(c->x); + free(c->y); + free(c->z); + free(c->m); + free(c->vx); + free(c->vy); + free(c->vz); + free(c->h); + } + error += posix_memalign((void **)&c->x, alignment,sizeBytes); error += posix_memalign((void **)&c->y, alignment,sizeBytes); error += posix_memalign((void **)&c->z, alignment,sizeBytes);