Пожалуйста, обратитесь код, указанный здесь:разница между использованием и не использованием нового указателя
Этот код является частью реализации стека в C++:
Код 1:
void Stack::pop()
{
if (top != 0) {
node* temp = top;
top = top -> link;
delete temp;
}
}
Код 2:
В первом примере я не использовал новый, в то время как я использовал его во втором. На беге, оба дают то же результат с полной программой, которую можно найти ниже:
#include <iostream>
using namespace std;
struct node {
string name;
node* link;
};
class Stack
{
node* top;
public:
Stack();
void push(string s);
void pop();
void display();
~Stack(){}
};
Stack::Stack() {
top = 0;
}
void Stack::push(string s)
{
node* temp = new node;
temp -> name = s;
temp -> link = top;
top = temp;
}
void Stack::pop() // Function in question
{
if (top != 0) {
node* temp = new node;
temp = top;
top = top -> link;
delete temp;
}
}
void Stack::display()
{
node* temp = new node;
temp = top;
while (temp != 0)
{
cout << temp -> name << "\n";
temp = temp -> link;
}
}
int main() {
Stack s;
s.push("Ra");
s.push("Sa");
s.push("Ga");
s.pop();
s.display();
}
Что такое разницы в использовании и не используя новый указателя здесь?
Также автоматически ли освобождается память или я должен делать это в деструкторе? Если да, то как это сделать?
@Abhineet Извините, что не нашёл это полезным – samjoe