Stack^ my_stack=gcnew Stack;
my_class^ a=gcnew my_class;
my_stack->Push(a);
my_stack->Push(gcnew my_class);
my_stack->Pop(); //will it cause memory leak?
a=gcnew my_class;
my_stack->Pop(); //will it cause memory leak?
抱歉,代码没有经过测试。但我想你们都明白我的意思。当您弹出指针时,您会丢失指针;内存会被释放吗?还有一种方法my_stack->Clear()
也让我感到困惑。
任何帮助,将不胜感激。
编辑:
@康拉德鲁道夫
Pop() 方法会调用析构函数本身还是 clr 会自动检索内存空间?
Konrad Rudolph 还建议我考虑只使用泛型集合类。
对于新的System::Collections::Generic::Stack<T>
它说'删除并返回堆栈顶部的对象'如果是这样,如果我之前有另一个指向对象的指针怎么办?那是,
my_class^ a=gcnew my_class;
Stack<my_class>^ my_stack=gcnew Stack<my_class>;
my_stack->Push(a);
my_stack->Pop(); //what is a now? nullptr?