Ошибка в очистке памяти
Появляется ошибка при очистке head в delStack()
, и я не понимаю в чем проблема.
#include <iostream>
#include <vector>
#include <string>
using namespace std;
typedef struct {
string name;
int amount;
}Data;
struct Node {
Data info;
Node* next;
};
Node* head;
Node* addStack(Data add) {
Node* p;
p = new Node[sizeof(Node)];
if (p) {
p->info = add;
p->next = head;
head = p;
}
return p;
}
void printStack() {
struct Node* p;
cout << "======================\n";
p = head;
while (p != NULL) {
cout << p->info.name << "\t" << p->info.amount << endl;
p = p->next;
}
}
void delStack() {
Node* p;
p = head->next;
free(head);
head = p;
}
int main() {
Data s;
head = NULL;
for (int i = 0; i < 5; i++)
{
cin >> s.name;
cin >> s.amount;
if (!addStack(s)) {
cout << "Error of adding element in stack" << endl;
break;
}
}
printStack();
delStack();
}
Источник: Stack Overflow на русском