Tuesday, 17 September 2013

implementing push_back on dynamically allocated memory for an array gives MEMORY LEAK

implementing push_back on dynamically allocated memory for an array gives
MEMORY LEAK

Trying to dynamically implement an array in C++ with the following function.
I am not sure if the newArray needs to be deleted but right now it gives a
memleak.
void DynamicArray::push_back(Element e)
{
if (arraySize == arrayCapacity) // Resizing is necessary
{
if (arrayCapacity == 0)
{
arrayCapacity += 2;
}
else
{
arrayCapacity *= 2;
}
Element* newArray = new Element[arrayCapacity*2]; // Make a
new array
for (int i = 0; i < arraySize; i++)
{
newArray[i] = dynamicArray[i]; // Copy over old data
}
// Update private variables
delete [] dynamicArray; // Remove the old array (prevent
memory leak)
dynamicArray = newArray;
//newArray = nullptr;
//delete [] newArray;
}
seems to give a memory leak

No comments:

Post a Comment