【问题标题】:Nested Stack Implementation嵌套堆栈实现
【发布时间】:2015-04-07 04:41:37
【问题描述】:

我正在尝试实现嵌套堆栈结构,基本上是封装在自定义堆栈中的标准堆栈。我正在上传代码。

struct Advstack
{
    stack* mainStack=NULL;
};

void pushNew(struct Advstack* new_stack, int val)
{
    new_stack->mainStack->push(val);
}

int main()
{
    struct Advstack* new_stack;
    pushNew(new_stack, 2);
}

这段代码给了我segmentation fault,我不知道为什么会这样。
PS:我已经包含了必要的头文件,即bits /stdc++ 和 stack.

【问题讨论】:

  • C++ 甚至不会编译你的代码 stack<int>* mainStack=NULL; 行。
  • 为什么要使用指针?只需声明一个非指针成员stack<int> minStack,您的问题就解决了。

标签: c++ stl segmentation-fault stack


【解决方案1】:

new_stack 未初始化。您需要在使用之前创建Advstack 的实例。您也永远不会将其成员 mainStack 分配给实际堆栈。这应该可以解决您的段错误:

    struct Advstack* new_stack = new Advstack;
    new_stack->mainStack = new stack<int>();
    pushNew(new_stack, 2);
    delete new_stack->mainStack;
    delete new_stack;

【讨论】:

  • 为什么要使用指针struct Advstack*,并应用new()/delete?
猜你喜欢
  • 1970-01-01
  • 2020-09-30
  • 2019-02-27
  • 2013-01-25
  • 1970-01-01
  • 2017-11-25
  • 2019-10-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多