[問題] 要怎麼知道array size?

看板EE_DSnP作者 (TAKUA)時間14年前 (2011/11/15 16:08), 編輯推噓8(805)
留言13則, 7人參與, 最新討論串1/1
如果是 int a[5]; 則sizeof(a) = 20 =4*sizeof(int) 但在memMgr.h的freeArr裡面,傳入的p應該是一個T的array 但sizeof(p) = 4 = sizeof(T*) 看來這招不能用。請問還有什麼方法可以知道array的大小呢? -- 春苑樹雪菜萌苗,雀兒喜上夏枝梢;藍眼望盡黃泉路,只盼儷人一美笑長巾初解投送抱,金珠麗葉賀新好;神代仙眷且羨嫉,長伴相隨誓到老。 靜馬千華留秋晚,冬風不止三鄉道;紅枝立約攜手情,今此空餘泣嚎啕。 姬宮千歌音悠悠,櫻井奏樂聲裊裊;奈何天令伊人變,飛離斯愛離斯去。 結城AIRA→ 悲慟獨泣無人應,白晝夢盡皆空語。 ←美鄉あき Kalafina→ 紅月旋響戚音樂,黯然步上鎮魂旅 ←飛 蘭 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.57.147.96

11/15 16:23, , 1F
同樣問題...
11/15 16:23, 1F

11/15 16:36, , 2F
去拿系統偷放的那個值
11/15 16:36, 2F

11/15 21:36, , 3F
我想請問的是那個值占多少記憶體?
11/15 21:36, 3F

11/15 21:37, , 4F
或者說,他是不是 size_t 的形式存放?
11/15 21:37, 4F

11/15 21:37, , 5F
很好奇這個值在 32 bit 和 64 bit 裡面占的空間是否有差
11/15 21:37, 5F

11/15 22:49, , 6F
好像是這樣沒錯吧?
11/15 22:49, 6F

11/16 00:17, , 7F
會以 size_t 存放喔
11/16 00:17, 7F

11/16 00:29, , 8F
問一下 *(size_t*)(p-sizeof(size_t)) 這樣寫對嗎??
11/16 00:29, 8F

11/16 00:39, , 9F
傳進 freeArr (前身:傳進 delete) 裡的 array pointer
11/16 00:39, 9F

11/16 00:40, , 10F
其實就已經是指向存那個值的位置了,所以不用減後面那坨
11/16 00:40, 10F

11/16 00:46, , 11F
噢噢 謝謝!!
11/16 00:46, 11F

11/16 01:01, , 12F
感謝!!!
11/16 01:01, 12F
結果問的人自己還是看不懂推文是什麼意思... ※ 編輯: 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)

11/16 20:04, , 13F
你把不同的東西搞混了,_first和delete沒有關係啊
11/16 20:04, 13F
文章代碼(AID): #1EmXuB8r (EE_DSnP)