在数组的动态分配内存上实现push_会导致内存泄漏 尝试用C++实现C++中的数组,具有以下函数:

在数组的动态分配内存上实现push_会导致内存泄漏 尝试用C++实现C++中的数组,具有以下函数:,c++,C++,我不确定是否需要删除新数组,但现在它给出了一个memleak void DynamicArray::push_back(Element e) { if (arraySize == arrayCapacity) // Resizing is necessary { // Update private variables if (arrayCapacity == 0) { arrayCapacity +=

我不确定是否需要删除新数组,但现在它给出了一个memleak

    void DynamicArray::push_back(Element e)
{
    if (arraySize == arrayCapacity) // Resizing is necessary
    {
        // Update private variables
        if (arrayCapacity == 0)
        {
            arrayCapacity += 2;
        }
        else
        {
            arrayCapacity *= 2;
        }
        Element* newArray = new Element[arrayCapacity]; // Make a new array
        for (int i = 0; i < arraySize; i++)
        {
            newArray[i] = dynamicArray[i]; // Copy over old data
        }

        delete [] dynamicArray; // Remove the old array (prevent memory leak)
        dynamicArray = nullptr;
        dynamicArray = newArray;
        newArray = nullptr;
        delete [] newArray;
    }

    if (arraySize < arrayCapacity) // No resizing needed
    {
        dynamicArray[arraySize] = e; // With x items are in the array, the new item has an index of x
        arraySize += 1;
    }

}
void DynamicArray::推回(元素e)
{
if(arraySize==arrayCapacity)//需要调整大小
{
//更新私有变量
if(阵列容量==0)
{
阵列容量+=2;
}
其他的
{
阵列容量*=2;
}
Element*newArray=newelement[arrayCapacity];//创建一个新数组
for(int i=0;i
似乎是内存泄漏

             arrayCapacity *= 2;
        }
        Element* newArray = new Element[arrayCapacity*2];
这会导致阵列比
arrayCapacity
大得多,这可能会在其他地方引起问题

应该是

 Element* newArray = new Element[arrayCapacity];

p、 如果这不是导致问题的原因,请告诉我,我会对此发表评论,但这是一个需要修复的bug,尽管如此

您分配了2个元素:

Element* newArray = new Element[arrayCapacity*2]; // Make a new array
我认为,需要:

Element* newArray = new Element[arrayCapacity]; // Make a new array

.看起来不错。。你怎么知道是内存泄漏?实施三民主义?(或者现在是五法则?)析构函数、赋值运算符和复制运算符?有没有理由不使用已经是动态数组的
std::vector
。@Lebeau:是的,我知道std::vector。你能给我们看一下
DynamicArray
的析构函数、复制构造函数和赋值运算符吗?很可能是其中一个导致了问题,但是您的泄漏检查工具正在报告分配发生的问题。