На данный вопрос уже ответили:
Есть связной список , во время когда удаляется из списка один узел, по идее его надо удалить , поскольку он был создан через new. Я использую оператор delete ,но после этого оператора выводится все так же адрес указателя. Почему???
class LinkedList{
private:
class Node{
public:
int a;
Node* next;
~Node(){
delete next;
}
};
Node* head;
int lenght;
public:
LinkedList(){
lenght=0;
head=nullptr;
}
void add(int x) {
Node* current = new Node;
current->a = x;
current->next = nullptr;
if(head==NULL){
head=current;
}else{
Node *node=head;
while(node->next!=NULL){
node=node->next;
}
node->next=current;
}
lenght++;
}
void remove(int index){
Node *temp=head;
int count=0;
while(count<index-1){
temp=temp->next;
count++;
}
Node *rem=temp->next;
Node *next=rem->next;
temp->next=next;
lenght--;
delete rem;
cout<<rem<<endl;
}
bool isEmpty(){
return lenght==0;
}
int get(const int index){
Node *temp=head;
int i=0;
while(i<index){
temp=temp->next;
i++;
}
return temp->a;
}
int *toArray(){
int arr[lenght];
Node *temp=head;
for(int i=0;i<lenght;i++){
arr[i]=temp->a;
temp=temp->next;
}
return arr;
}
int size(){
return lenght;
}
};
int main(){
setlocale(LC_ALL,"rus");
LinkedList obj;
obj.add(1);
obj.add(2);
obj.add(3);
obj.add(4);
obj.add(5);
obj.remove(2);
for(int i=0;i<obj.size();i++)
cout<<obj.get(i)<<endl;
return 0;
}
оператор delete rem; освобождает память, выделенной для обьекта, на который указывает rem. Но в rem, как и раньше, записан этот адрес, только с той разницей, что этот адрес может использоваться для других обьектов. Так как этот указатель создан в функции, он уничтожается сам после выхода из функции, и его значение вы не возвращаете из функции, поэтому несанкцианированный доступ к освобожденной части памяти(уничтоженного обьекта) вы не сможете иметь. Если есть ситуация, что вы где то должны хранить этот указатель, то его перед хранением нужно обнулять, т.е. присвоить ноль(nullptr)
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости