小编Def*_*ult的帖子

如何判断对象是在栈内存还是堆内存

我最近收到了一份数据结构课程的大学作业,要求我用 C++ 创建一个双向链表

在处理双向链表时,我需要实现各种功能,但特别引起我注意的一种方法是“clear()”。该方法负责清除双向链表内的所有元素:

void clear(Node* head_ptr)
{
    Node* previous_ptr = nullptr;

    while(head_ptr != nullptr)
    {
        previous_ptr = head_ptr; // Store previous node.

        head_ptr = head_ptr->next;

        delete previous_ptr;
    }
};
Run Code Online (Sandbox Code Playgroud)

该方法非常简单;它只是迭代所有元素并为每个元素释放内存Node。然后,我在析构函数中调用此方法,如下所示:

~List()
{
    clear_list(m_head_ptr);
};
Run Code Online (Sandbox Code Playgroud)

然后我开始思考。如果我的节点元素位于堆上,这种释放内存的方法就很好,如下所示:

int main()
{
    List list;

    Node* node_1 = new Node(3, nullptr);    // The tail node.
    Node* node_2 = new Node(1, node_1);
    Node* node_3 = new Node(5, node_2);
    Node* node_4 = new Node(7, …
Run Code Online (Sandbox Code Playgroud)

c++ list heap-memory stack-memory

1
推荐指数
1
解决办法
141
查看次数

标签 统计

c++ ×1

heap-memory ×1

list ×1

stack-memory ×1