ArrayTable leak

This commit is contained in:
James Cherry 2020-05-03 19:04:09 -07:00
parent d90e568657
commit ad6ddc146a
1 changed files with 10 additions and 2 deletions

View File

@ -48,6 +48,7 @@ public:
private: private:
ArrayBlock<TYPE> *makeBlock(uint32_t size); ArrayBlock<TYPE> *makeBlock(uint32_t size);
void pushBlock(ArrayBlock<TYPE> *block); void pushBlock(ArrayBlock<TYPE> *block);
void deleteBlocks();
size_t size_; size_t size_;
// Block index of free block (blocks_[size - 1]). // Block index of free block (blocks_[size - 1]).
@ -73,6 +74,14 @@ ArrayTable<TYPE>::ArrayTable() :
template <class TYPE> template <class TYPE>
ArrayTable<TYPE>::~ArrayTable() ArrayTable<TYPE>::~ArrayTable()
{
deleteBlocks();
delete [] blocks_;
}
template <class TYPE>
void
ArrayTable<TYPE>::deleteBlocks()
{ {
for (int i = 0; i < blocks_size_; i++) for (int i = 0; i < blocks_size_; i++)
delete blocks_[i]; delete blocks_[i];
@ -171,8 +180,7 @@ template <class TYPE>
void void
ArrayTable<TYPE>::clear() ArrayTable<TYPE>::clear()
{ {
for (int i = 0; i < blocks_size_; i++) deleteBlocks();
delete blocks_[i];
blocks_size_ = 0; blocks_size_ = 0;
size_ = 0; size_ = 0;
free_block_idx_ = block_idx_null; free_block_idx_ = block_idx_null;