delete memory in common/array.h on destruction

Hopefully fix a memory leak in common/array.h by adding a destructor
that does a delete on the underlying array if it was previously
allocated.
This commit is contained in:
Rafael Kitover 2017-04-27 08:35:25 -07:00
parent a5ebd8d2b4
commit cab6f0f026
1 changed files with 24 additions and 3 deletions

View File

@ -22,19 +22,40 @@ template <typename T> class Array
private:
pointer m_p;
size_type m_size;
bool dealloc;
public:
Array(size_type size = 0) : m_p(size ? new value_type[size] : 0), m_size(size)
Array(size_type size = 0)
{
m_p = NULL;
dealloc = false;
if (size) {
m_p = new value_type[size];
m_size = size;
dealloc = true;
}
}
void reset(size_t size)
{
if (this->m_p) {
delete[] this->m_p;
this->m_p = size ? new value_type[size] : 0;
this->m_p = NULL;
}
if (size) {
this->m_p = new value_type[size];
dealloc = true;
}
this->m_size = size;
}
~Array()
{
if (dealloc) delete m_p;
}
size_type size() const
{
return (this->m_size);