Очистка памяти динамического массива

Класс, реализующий работу стека. В методе Push условие отвечает за создание и копирование данных из старого массива в новый(temp указатель на динамический массив). Нужно сделать условие, в котором будет очистка памяти старого массива.

class Stack
{
public:

    Stack()
    {
        top = 0;
    }

    void Push(int value)
    {   
        if (top > size)
        {
            temp = stack;
            size += 1;
            stack = new int[size + 1];
            for (int i = 0; i < top; i++)
            {
                stack[i] = temp[i];
            }
        }

        stack[top++] = value;
    }

Ответы (1 шт):

Автор решения: KoVadim

Сделал минимальный пример, который работает

#include <iostream>

class Stack
{
    int top;
    int size;
    int* stack;
public:
    Stack() { top = 0; size = 0; stack = nullptr;}
    void Push(int value)
    {   
        if (top >= size)
        {
            int* temp = stack;
            size += 10; // или другое число
            // главное, что бы size > top
            stack = new int[size];
            for (int i = 0; i < top; i++)
            {
                stack[i] = temp[i];
            }
            delete[] temp;
        }

        stack[top++] = value;
    }
    void Show() {
        for (int i = 0; i < top; i++) {
            std::cout << stack[i] << "\n";
        }
    }
    ~Stack() { delete[] stack;}
};


int main() {

    Stack s;
    s.Push(1);
    s.Push(2);
    s.Push(3);
    s.Show();
}
→ Ссылка