我们可以删除链表中静态内存中的节点吗
Can we delete a Node in Linked List which is in static memory?
//This program implements queue using Linked List
#include<bits/stdc++.h>
using namespace std;
struct Node{
int data;
struct Node* next;
};
struct Node* front=NULL;
struct Node* rear=NULL;
void Enqueue(int x){
struct Node* new_node=new Node();
new_node->data=x;
new_node->next=NULL;
if(front==NULL && rear==NULL){
front=rear=new_node;
return;
}
rear->next=new_node;
rear=new_node;
}
void Dequeue(){
struct Node* temp=front;
if(front==rear){
front=rear=NULL;
return;
}
else{
front=front->next;
}
delete temp;
}
void display(){
struct Node* current=front;
while(current!=NULL){
cout<<current->data<<" ";
current=current->next;
}
}
int main(){
cout<<"Enqueuing......"<<endl;
Enqueue(5);
Enqueue(4);
Enqueue(1);
Enqueue(8);
display();
cout<<"nDequeuing......"<<endl;
Dequeue();
display();
return 0;
}
在void Dequeue((中,使用了delete temp,但我还没有在堆内存中分配Node*temp,但是它仍然删除了temp Node。但只有在堆中分配了某些内容时,才能使用delete。PS:代码运行良好,我只想知道delete是否可以用于静态内存分配中的删除。
此代码:
struct Node* temp = front;
// ...
delete temp;
只要front
指针指向动态分配的内存。
请注意,此代码段中的struct
关键字是多余的。
相关文章:
- 我们可以删除链表中静态内存中的节点吗
- 避免在使用链接列表从 deque 中删除最后一个节点时出现内存泄漏
- 对树节点使用 CString 时出现内存泄漏
- 如何在 C++11 的内存池中分配 std::map 的内部RB_tree节点?
- C 中的学生指针节点列表中的内存泄漏
- 两个单链列表共享同一个节点和析构函数两次删除相同的内存
- 将节点添加到链接列表中,而无需明确分配内存空间(无需使用新)
- 在声明节点创建链接列表时,为什么静态内存分配不起作用
- 在C++中设置节点的内存地址
- C++ 如何在不丢失内存的情况下删除节点
- 当我通过删除临时节点来释放内存时,我会得到读取访问违规行为.但是只有当我返回错误语句时
- 如何从链表上的节点为分配的类释放内存
- 当两个节点相互指向时,不可避免的内存泄漏
- 使用节点::缓冲区包装现有内存
- “算子删除”如何为链表节点释放内存块
- 我们需要为链表节点分配内存吗
- 通过池分配器中的内存地址访问可用列表节点时出现问题
- c++ STL列表节点内存分配中的段错误
- std::列出元素删除后节点的内存回收
- 在C/ c++中,链表只有头指针分配在堆栈中,其他节点分配在堆中.这可能导致内存泄漏