#include <iostream>
#include <cstdlib>
using namespace std;
struct node
{
int val;
node *next;
};
void add(node* &H, int x) //dodawanie nowego węzła
{
node *p = new node;
p->val=x;
p->next=H;
H=p;
}
void del(node* &H) //usuwanie
{
node *p= new node;
H=p->next;
delete p;
}
int main()
{
node *H=NULL;
add(H,8); // tutaj dodam sobie trzy węzły
add(H,15);
add(H,64);
cout << H->val << endl; // elegancko wyświetla "64"
del(H);
cout << H->val << endl; // no i tutaj program się wysypuje ( żółta strzałka tutaj wskazuje ( Code Blocks ) )
system("pause");
return 0;
}
Witajcie
Nie rozumiem pewnego problemu. Otóż wszystko się elegancko kompiluje, ale wyskakuje mi naruszenie ochrony pamięci. Czemu tak? Przecież, podstawiam pod H następny element z listy ( jest to H = p-> next ) a następnie zwalniam pamięć poprzez "delete".