推 VictorTom:忘了有HeapMemory直接跟OS要memory的這一招....XD 12/08 20:08
推 NoobImage:我只能說 當你使用BCB6碰到才懂 它的問題不是出在量 12/08 20:26
→ NoobImage:也不是管理 而是最後面的free/delete產生的BUG 12/08 20:26
→ VictorTom:樓上, 我覺得是是你沒看懂y大的回應, 如果它是BCB在new 12/08 20:29
→ VictorTom:/delete的bug, 你用"new"的跟用STL, 因為底層都還是用 12/08 20:29
→ VictorTom:BCB的memory management的LIB, 有bug存在都一樣可能會發 12/08 20:30
→ VictorTom:生, 沒遇到是某些case STL沒有真正free掉mem, 所以運氣 12/08 20:31
→ VictorTom:好沒遇到; 用久了用多了會不會出事, 只有天曉得....Orz 12/08 20:31
推 NoobImage:問題可能出在delete 二維 而STL對Vector屬於一維 12/08 20:34
→ NoobImage:當初解決的方式也是繞過二維delete而已 只是程式攏長 12/08 20:35
→ NoobImage:且速度較慢 並不是所謂 記憶體管理問題 而是delete瑕疵 12/08 20:36
→ NoobImage:不需要借OS mem 也毋須換開發軟體只要一個乾淨的del方法 12/08 20:37
推 VictorTom:C/C++沒有真正的二維陣列, 多維也不過是一維串起來的@@" 12/08 20:37
→ VictorTom:你懷疑二維有錯, 就要一個NxN大小的一維, 自己map成二維 12/08 20:38
→ VictorTom:的來用試看看; 至於什麼換一個乾淨的del方法, 老實說看 12/08 20:39
推 NoobImage:那有點離題了 12/08 20:39
→ VictorTom:到小弟不知道有什麼叫"乾淨的del方法"可以用的....Orz 12/08 20:39
推 NoobImage:我認為解決這難題比討論它原理更有價值 因為問題本身並 12/08 20:43
→ NoobImage:不明確 只有try到正確 才能說明問題的根本 12/08 20:43
→ NoobImage:而題目我所要表達的就是如此所以我只簡單說明發生的問提 12/08 20:45
→ sunneo:你看得懂`用HeapMalloc`這句話嗎... ? 12/08 20:54
→ sunneo:del到最底層也只是把那一塊mark並且歸還而已 12/08 20:55
推 VictorTom:我認為, 你就是不懂原理也不像想了解原理, 才一直不懂我 12/08 21:48
→ VictorTom:們在說什麼; 講白話一點, 如果你的懷疑-BCB的delete[]有 12/08 21:49
→ VictorTom:bug是對正確的, 那麼你在BCB上用STL一樣不能解決問題, 12/08 21:49
→ VictorTom:如果恰好解決, 那不是你本來的new/delete邏輯有誤, 就是 12/08 21:49
→ VictorTom:運氣好, 用STL沒遇到那個delete的問題點, 因為STL也要動 12/08 21:50
→ VictorTom:態配置, 它內部實作也一樣用new/delete, 這些都同樣會使 12/08 21:50
→ VictorTom:用BCB的Memory Management, 再講白話一點要錯是大家一起 12/08 21:50
→ VictorTom:錯, STL一時OK只是運氣好剛好沒碰到. 12/08 21:51
→ VictorTom:如果BCB的delete - 即Memory Management有問題, 你要迴 12/08 21:52
→ VictorTom:避的方法就是y大提供的HeapAlloc, 直接跟OS要, 自己來管 12/08 21:52
→ VictorTom:理, 因為那樣才會繞過BCB自己的機制. 12/08 21:53
→ VictorTom:反過來說, 同樣的code你試過其他IDE來build來run嗎??還 12/08 21:53
→ VictorTom:是網路上有很人反應了類似的問題??不是說這些開發工具提 12/08 21:54
→ VictorTom:供的東西就不會出錯, 只是delete這麼常用的東西有錯早就 12/08 21:54
→ VictorTom:應該在各forum上被人報一堆了; Service Pack最後好像到4 12/08 21:55
→ VictorTom:的樣子可以更新看看; 如果真的是BCB底層的delete機制有 12/08 21:56
→ VictorTom:bug, 你只有選擇避開有問題的機制, 或者換掉BCB. 12/08 21:56
→ VictorTom:最後還是要提那句老同事說過的一句話: 12/08 21:58
→ VictorTom:"你永遠無法證明一個程式正確, 只能證明它有錯" 12/08 21:59
推 VictorTom:Err~眠月大不好意思, 小弟推了一堆, 也許可以回文的Orz 12/08 22:03
推 ledia:其實就我的經驗, 程式暫時能跑是大部份人的目標 12/08 22:08
→ ledia:大約只有 10% 的人是希望程式能一直好好的跑下去 12/08 22:09
→ ledia:原因就是因為, 讓程式能一直好好跑下去, 要探究的主題太多 12/08 22:09
→ ledia:但通常這部份的知識, 才是一個好的程式設計師的價值所在 12/08 22:10
→ bugmens:我也還在用BCB6,從來沒發覺delete有問題 XD 12/08 22:18
→ yoco315:他很堅持 delete 有問題的話,我很想建議他不要 delete XD 12/08 22:41
→ sunneo:最近版上這樣的人太多了 ...唸也不好意思唸了 12/08 22:44
推 twotwoone:V大真是熱血青年。 12/09 05:45
推 VictorTom:唉~~因為自己的工作code看的不順利, 還趕時間要改完Q_Q~ 12/09 08:38
→ VictorTom:後來想到, 上面推了那一大段外, 還有一種可能是誤寫了超 12/09 09:14
→ VictorTom:過要來的heap空間導致破壞了記錄heap資訊的欄位, 記得之 12/09 09:15
→ VictorTom:前有討論heap資訊會放在要來的heap資料附近....@_@" 12/09 09:15
推 NoobImage:結果出來了 不是Delete的問題 是真的檔案過大 12/09 17:55
→ NoobImage:後來發現學妹用了2500000*INT 動態配制不足 12/09 17:55
→ NoobImage:之前一直固執己見造成各位困擾在這表達歉意 12/09 17:56
→ NoobImage:不過經過各位的解釋我也學到很多 謝謝 12/09 17:57
推 VictorTom:噗嗤XD 剛算了一下, 那個大小才Hex 6位數, 應該去BCB6 12/09 19:10
→ VictorTom:把Heap size調大就可以了, 預設的設定好像是0x00100000 12/09 19:11
→ VictorTom:自己改最大好像能到0x01000000; 要更大BCB就不知道了:) 12/09 19:11