→ loveme00835:我怎麼覺得是你 node->y 的地方有錯 08/28 23:26
推 QQ29:雖然不懂問題 但這樣寫看似很正確阿?正確寫法還會有機會錯嗎! 08/28 23:27
→ QQ29:如果這樣好恐怖的感覺 是什麼原因造成這樣的阿 08/28 23:28
→ purpose:GDB 那裡應該是指 malloc 函數執行時出錯,久沒用 GDB 08/28 23:29
→ purpose:malloc 的參數改成別的值試試 08/28 23:30
→ deepking:有把size改成數字也是會錯... 08/28 23:35
※ 編輯: deepking 來自: 220.142.179.78 (08/28 23:36)
→ deepking:會是之前已經malloc太多嗎? 2XXXX bytes 08/28 23:41
※ 編輯: deepking 來自: 220.142.179.78 (08/29 00:14)
推 clanguage:兩個都不對...囧 08/29 00:18
→ clanguage:區域變數離開 function 就被釋放了 08/29 00:19
變數X是在更前面的function,偷懶XD
用迴圈 call B, B在call C
→ loveme00835:int* x; 這個指標沒有指向某個變數,垃圾值是不能拿來 08/29 00:58
→ loveme00835:dereference 的,新手十二誡之三 08/29 00:59
→ peefly:func.A裡面,參數帶入了x,但卻完全沒拿來用?! 08/29 01:13
sorry,只把部份 code 打出來
→ tinlans:malloc() 這種東西會出錯,唯一可能性就是之前破壞 heap 08/29 01:37
→ tinlans:又或者說,是破壞 heap management 用途的結構。 08/29 01:37
→ tinlans:就像你不小心 pointer 亂指把 linked list 的 next 指到 08/29 01:38
→ tinlans:莫名其妙的地方去,當下還不會出錯。但是後來你單純只是 08/29 01:38
→ tinlans:順順地從 list 的頭走到尾,就出事了。 08/29 01:38
→ tinlans:修上上句:「把 linked list 內某個 node 的 next 指到」 08/29 01:39
→ sunneo:會把程式碼debug到這地步 我想程式已經相當龐大了 08/29 01:40
→ sunneo:也許是你假設一個struct的field有資料 於是你用了他且free 08/29 01:44
→ sunneo:但事實上從沒將該field assign資料過 08/29 01:45
一開始是 int* x; x = 0; (換成*x=0; 錯就跑到這行了
所以是這樣破壞heap ?
※ 編輯: deepking 來自: 220.142.178.127 (08/29 08:38)
推 clarkman:你用位置0的指標X進去,有要做什麼嗎? 08/29 09:57
→ clarkman:打錯,不是位置零,但你沒有賦予位置,還去把他設值 08/29 09:59
→ clarkman:可能會記憶體存取錯誤 08/29 09:59
→ loveme00835:就像t大所說, x可能指到malloc管理記憶體會用到的欄位 08/29 10:15
→ loveme00835:因為他是垃圾值, 所以只是「可能」,所以造成malloc無 08/29 10:16
→ loveme00835:法正常運作 08/29 10:17
推 cobrasgo:aaa的宣告拿來看一下唄 08/30 22:20
→ cobrasgo:眼殘囧 08/30 22:21