這篇也是同事的心得,因為程式一開始沒有作記憶體釋放動作,因而造成整個系統資源被吃光,希望不要再有人犯同樣錯誤。畢竟保持環境清潔人人有責。
C++中有new 和 gcnew(garbage collection new)(C#裡面的new 其實就是gcnew)
原則上managed的物件都只能用gcnew去創造
而unmanaged則是用new
這兩個東西的差別是需不需要主動去做garbage collection(delete的動作)
在managed的程式中
隔一段時間,GC會去判斷目前的記憶體空間是否沒有reference
沒有的話就會釋放出來
也可以採用GC::Collect()去做這件事(不需要特別再對每個ref做delete,delete沒有實際效果)
new的話就需要自己在確定沒有使用的時候去把他delete掉
另外還有一類,使用global的函式所給出的handle(比如canvas裡用的CreatePen)
不知道為什麼,他不會計算到程式的記憶體使用量裡面(一直create不會發現程式記憶體用輛增加)
但是因為沒有清掉,所以還是會在使用過多的時候發生問題(程式crash)
所以得要去做DeleteObject的動作
0 意見:
張貼留言