【发布时间】:2015-08-13 04:38:45
【问题描述】:
我使用了一堆结构体。
struct stack_values {
long long int sp;
bool sign; //true=sum, false=sub
long long int imm;
};
static std::stack<stack_values> sosp;
我用这段代码压栈;
stack_values sosp_values;
sosp_values.sp = 0;
sosp_values.sign = true;
sosp_values.imm = 0;
sosp.push(sosp_values);
我想知道当我调用sosp.pop(); 时,C++ 是否释放了它在我推送时为sosp_values 分配的内存。
如果没有。如何释放内存。
stack_values top = sosp.top();
sosp.pop();
delete top;
上面的代码不起作用,因为变量top不是指针。
【问题讨论】:
-
是什么让您认为
std::stack在元素为pop()ed 时不会释放内存? -
我有一个巨大的堆栈,里面有意想不到的值。所以我想知道问题是因为内存分配还是其他原因。
标签: c++ memory-management struct stack