C++堆栈实现,不在函数中保留内存

标签 c++ memory-management stack

<分区>

你好我想写栈实现,不幸的是出了点问题

CPP文件

  Node* head=0;

std::cout << "front insertion" << std::endl;
addBeg(head, 1);
std::cout<<head<<std::endl;

头文件

class Node
{public:
    int value;
    class Node *next_el;
    Node(int value){ this->value=value;next_el=NULL;}
};

void addBeg(Node *head, int value){
head=new Node(value); //even that doesn't work!?
}

我真的很想知道为什么main中的“head”仍然是NULL值; 我做错了什么?

最佳答案

您可以通过更改 header 来解决此问题,但这是不明智的:

void addBeg(Node * &head, int value){
  head=new Node(value); // now it works
}

两个版本在代码中的调用方式相同。以这种方式更改函数(通过引用而不是通过值来获取参数)确实会让用户感到困惑,但我想在这种情况下这并不重要。

关于C++堆栈实现,不在函数中保留内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18175494/

相关文章:

ios - 内存管理 iOS 开发应用程序在一些细节项目后不起作用

c - 内联汇编堆栈行为

memory-management - 调用 free 或 delete 是否会将内存释放回 "system"

java - 是否可以覆盖任何 Java 小程序的最大堆大小的默认设置?

java - 数学的堆栈行为

c - 堆栈问题: Local variables vs Arithmetics

c++ - 我可以使用 SFINAE 有选择地定义模板类中的成员变量吗?

c++ - "Undefined symbols for architecture arm64"使用 g++-12 在 M1 mac 上构建基本 SFML 项目

c++ - C++ 结构中的数组

c++ - 如何在运行时选择迭代器方向