diff --git a/include/sta/ArrayTable.hh b/include/sta/ArrayTable.hh index 547fc91d..3e08ab2d 100644 --- a/include/sta/ArrayTable.hh +++ b/include/sta/ArrayTable.hh @@ -48,6 +48,7 @@ public: private: ArrayBlock *makeBlock(uint32_t size); void pushBlock(ArrayBlock *block); + void deleteBlocks(); size_t size_; // Block index of free block (blocks_[size - 1]). @@ -73,6 +74,14 @@ ArrayTable::ArrayTable() : template ArrayTable::~ArrayTable() +{ + deleteBlocks(); + delete [] blocks_; +} + +template +void +ArrayTable::deleteBlocks() { for (int i = 0; i < blocks_size_; i++) delete blocks_[i]; @@ -171,8 +180,7 @@ template void ArrayTable::clear() { - for (int i = 0; i < blocks_size_; i++) - delete blocks_[i]; + deleteBlocks(); blocks_size_ = 0; size_ = 0; free_block_idx_ = block_idx_null;