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:
parent
a5ebd8d2b4
commit
cab6f0f026
|
@ -22,19 +22,40 @@ template <typename T> class Array
|
||||||
private:
|
private:
|
||||||
pointer m_p;
|
pointer m_p;
|
||||||
size_type m_size;
|
size_type m_size;
|
||||||
|
bool dealloc;
|
||||||
|
|
||||||
public:
|
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)
|
void reset(size_t size)
|
||||||
{
|
{
|
||||||
|
if (this->m_p) {
|
||||||
delete[] 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;
|
this->m_size = size;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
~Array()
|
||||||
|
{
|
||||||
|
if (dealloc) delete m_p;
|
||||||
|
}
|
||||||
|
|
||||||
size_type size() const
|
size_type size() const
|
||||||
{
|
{
|
||||||
return (this->m_size);
|
return (this->m_size);
|
||||||
|
|
Loading…
Reference in New Issue