Очистка памяти динамического массива
Класс, реализующий работу стека. В методе 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();
}