查看完整版本: [未解決]記憶體洩漏
頁: [1]

ice810406 發表於 2011-6-13 08:56 PM

[未解決]記憶體洩漏

1.    我有看過自學手冊裡面所說的記憶體洩漏篇的內容了
可是我還是不懂記憶體洩漏到底是甚麼意思= =      有沒有很簡單的比喻可以讓我了解它到底是甚麼呢= =?    麻煩各位賜教......


2.之前有看過某張地圖他把記憶體洩率顯示出來(顯示在地圖資訊框    就是會顯示殺人數放活時間的那框的下方)      請問要怎樣才能弄得出來?


3.順便一問    我的殺人數與復活時間那個框預設顯示居然是"-"      怎樣可以把預設顯示設成"0"呢?...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div><div></div>

howard.huang 發表於 2011-8-15 10:05 PM

1.記憶體洩漏就是像你創建一個變數x,然後輸入數值9999。
這個9999會一直儲存在你的記憶體裡面直到遊戲結束。這個影響或許很小,但要是存了上萬個數值,就會開始導致lag。解決方法請參見自學手冊。
2.我不會。(...)也許要動用到傳說中的jass?
3.當你的計分板創造時就先代進數值,或者是先寫上0。

GravitationX 發表於 2011-8-30 10:03 AM

本帖最後由 GravitationX 於 2011-8-30 10:06 AM 編輯

2樓講得不太精確,我怕你會誤解記憶體漏失的真正問題。

memory leak是計算機科學中非常重要的問題,好的程式設計師會避免這種問題。
魔獸爭霸的程式設計有缺陷,導致這種問題。
記憶體漏失簡單來說,就是某程式向作業系統要求配置記憶體,某程式用完後,卻霸佔記憶體不放,不歸還給作業系統,導致這支程式記憶體愈用愈多,到最後記憶體被用光就變得非常慢(通常會慢到想打爛電腦),因為必須用到虛擬記憶體,如果連虛擬記憶體也用光,程式就可能會當機(最壞的狀況可能會產生死結)。
記憶體漏失通常不會愈來愈lag,除非有用到虛擬記憶體(硬碟模擬出來的記憶體),這種狀況才會lag,硬碟存取速度遠低於主記憶體。

而魔獸爭霸發生記憶體漏失的lag問題是在霸佔記憶體後,生命週期結束的變數卻沒有釋放自己占用的記憶體空間,普遍的3D遊戲,每一個frame都會去檢查(遊戲程式的主流設計),如果變數在該作用域就結束卻沒有被釋放,每一個frame若還去檢查那些早就死掉的變數,這種已死的變數若愈來愈多,勢必會愈來愈lag。


第二點,直覺上使用jass語言來寫會比較容易,但不代表trigger肯定做不到(我很久沒用trigger了)。

第三點2樓已經解決。...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>

kimoala2006 發表於 2011-9-6 07:54 AM

使用YDWE.S版編輯器裡面有一個新增觸發''自動排洩功能''這樣因該能解決你的問題

jojo2008 發表於 2011-11-7 05:39 PM

例如
1.你需要測量A到B的距離 先把A點和B點設成變數 再用變數計算距離
2.創造特效以後把特效設定成變數 事後刪除
3.創造的單位請把生命回復數值設成負數 讓他自己死亡
只要盡量不遺留太多垃圾在地圖裡就好了<br><br><br><br><br><div></div>

chan0202 發表於 2011-11-15 07:53 PM

目前只有vjass可以做到記錄變數的功能,如果你不太懂vj或j的話我建議你用ydwe.s
頁: [1]