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()
这也困惑我。Stack.pop内存管理
任何帮助,将不胜感激。
编辑:
@Konrad鲁道夫
请问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?
为什么你甚至会把原始指针放在你的容器中? – 2012-07-15 13:20:01
它的工作方式是...这里检查[链接](http://msdn.microsoft.com/en-us/library/system.collections.stack.push.aspx) – Immueggpain 2012-07-15 13:21:16
@KerrekSB什么原始指针? – 2012-07-15 13:27:04