推 inferior9527:同樣問題... 11/15 16:23
推 wmin0:去拿系統偷放的那個值 11/15 16:36
推 victoret:我想請問的是那個值占多少記憶體? 11/15 21:36
→ victoret:或者說,他是不是 size_t 的形式存放? 11/15 21:37
→ victoret:很好奇這個值在 32 bit 和 64 bit 裡面占的空間是否有差 11/15 21:37
→ e124553423:好像是這樣沒錯吧? 11/15 22:49
推 TommyKSHS:會以 size_t 存放喔 11/16 00:17
推 Komemushisp:問一下 *(size_t*)(p-sizeof(size_t)) 這樣寫對嗎?? 11/16 00:29
→ TommyKSHS:傳進 freeArr (前身:傳進 delete) 裡的 array pointer 11/16 00:39
→ TommyKSHS:其實就已經是指向存那個值的位置了,所以不用減後面那坨 11/16 00:40
推 Komemushisp:噢噢 謝謝!! 11/16 00:46
推 victoret:感謝!!! 11/16 01:01
結果問的人自己還是看不懂推文是什麼意思...
※ 編輯: takua624 來自: 140.112.25.107 (11/16 07:46)
好,現在勉強懂了,總之經過謎一般的dereference,可以得到*p就是array size
但是,把他加到例如size=2的list好了,如果裡面原本的_first指著一個0x0000
那麼...根據這個list的使用方式,我們會把_first指向p,而*p = 0x0000
這樣...下次再delete[]一次p的時候,要去讀他的array size就會變成
0x0000強制轉譯成size_t之後的結果,然後就______了
這樣的話要怎麼應付重複delete[]的問題呢?
※ 編輯: takua624 來自: 140.112.4.195 (11/16 15:19)
※ 編輯: takua624 來自: 140.112.4.195 (11/16 15:20)
推 shryuhuai:你把不同的東西搞混了,_first和delete沒有關係啊 11/16 20:04