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