這篇文章是我自己的心得,
也歡迎大家可以一起討論。
以前在寫C++的時候,
比較不喜歡用動態配置記憶體的方式,
C++寫一個class呼叫只有用
ClassName myName;
的方式呼叫就可以了,
只要在建構子寫好預設值就可以了,
如果有new的到後來一定要delete掉,
要不然會有占用記憶體的問題,
似乎程式關掉也不會釋放,
一定要重新開機才會釋放。
可是後來開始用C#,
除了C#原本自訂的類別之外,
自己寫的類別都要用
ClassName myName = new ClassName();
即使有在建構子寫好預設值,
如果沒有new就沒辦法用,
可以編譯但執行會出錯,變數會變成null
聽說C#會自己釋放記憶體,
不過其實微軟的東西有時候會覺得怕怕的,
另外還有遇到一種狀況,
在做某些比較龐大的資料處理的時候,
有時候會發生Out Of Memory的情況,
64位元的程式也是會這樣,
可是用記憶體偵測的程式來看,
記憶體也沒有真的增加那麼多,
看起來還是維持在跟原本差不多最多高一點點的情況,
那到底為什麼會有Out Of Memory的情況發生呢?
一點點心得,
如果大家願意討論的話歡迎來交流。
其實一般撰寫程式需要自己要去掌控物件的生存時間
c#和java不用自己來銷毀是因為有GC
GC說明
GC會定時一段時間把[參考類型的物件]為NULL銷毀
而版主遇到的Out Of Memory狀況
可能這個程式使用的記憶體大小超過系統配置的大小
例如系統配置給這個程式128MB記憶體
但您使用超過128MB所以就報Out Of Memory
恩恩, 這是有可能,
不過我有辦法增加系統配置給這個應用程式的記憶體大小嗎?
GC是嗎?
有空要來研究一下了.