我正在尝试实现嵌套的堆栈结构,基本上是封装在自定义堆栈中的标准堆栈。我正在上传代码。
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 。
答案 0 :(得分: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;